外层 len-1 里层 j=i+1 j<len
int a[10]={23,12,4,67,20,100,21,45,3,28};
假设a[0]为最小,分别与a[1] a[2] ... 比较, 在比较过程中,如果有元素的值比a[0]小,交换值
第一种方法
//每一趟都是拿着一个元素与后面其他元素进行比较,找出最小值
void selectSort1(int array[],int len){
// 1、确定需排序趟数
for (int i = 0 ; i < len - 1; i++) { // 2、每一趟怎么处理
for (int j = i + 1; j < len; j++) {
if (array[i] > array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
第二种方法
void selectSort2(int arr[],int len){
int temp;
int min;
for (int i=0; i<len - 1; i++) {
//每次假设第arr[i]是最小值 min = i;
min = i;
for (int j=i+1; j<len; j++) {
//找到最小的那个元素的下标
if (arr[j]<arr[min]) min=j;
}
//如果没有找到比arr[i]小的,就不用交换 if(i!= min){
//将第i个元素和最小的元素交换 temp=arr[i];
temp = arr[i];
arr[i]=arr[min];
arr[min] = temp; }
}
//打印数组
for (int i=0; i<len; i++) {
printf("%d\t",arr[i]); }
}
|
|