简单的选择排序
要点:在数组中每扫描一遍都选出一个最小值依次和前面的值交换
第一次交换第一个,第二次交换第二个,以此类推。
void selectSort(int *arr){
int i=0,begin=0,end=0,minPosition=0;
for(i=0; i<length-1; i++){//最后一趟都不用比length-1
begin = i;
end = length;
minPosition = findMin(arr,begin ,end);//使用打擂台法查最小值
swap(&arr[i],&arr[minPosition]);//交换位置
}
}
//打擂台法查最小值
int findMin(int *arr, int begin, intend){
int min = *(arr+begin);
for(++begin;begin<end;begin++){
if(*(arr+begin)<min){
min = *(arr+begin);
}
}
return min;
}
简单的冒泡排序
要点:每趟交换出一个最大的在最后
for(int i=0; i<length-1; i++){//总趟数是 长度-1
for(int j=0; j<length-i-1; j++){//每一趟的比较的次数是 当前趟剩余元素-1
if(arr[j]>arr[j+1]){
tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1]= tmp;
}
}
}
图解如下: