选择排序也是排序算法中 最基础的排序之一。
排序思路:
1.当元素小于等于1时,无需对数组进行排序;
2.当数组元素个数大于1时,按从前到后的顺序对数组元素进行排序;
3.首先设置一个边界值bound = 0,bound相当于将 数组分成两个数组,一个为有序数组,另一个为无需数组;
4.在数组中查找最大的值,与下标为bound的数组元素进行交换,然后使bound++,进入下一轮的比较;
5.当bound值等于数组的大小值size时,循环结束(此时的数组就是一个有序数组)。
选择排序函数代码:
//函数的实现
void SelectSort(int array[],int size){
if(size<=1){
//无需排序
return;
}
//数组元素个数大于1
size_t bount = 0;//边界
for(;bount<size;++bount){
size_t cur = bount+1;
for(;cur<size;++cur){
if(array[bount] > array[cur]){
swap(&array[bount],&array[cur]);
}
}//二层循环结束
}//一层循环结束
return;
}
交换函数程序代码:
//交换函数
void swap(int *a,int *b){
int tmp = *a;
*a = *b;
*b = tmp;
return;
}
测试用例程序代码:
//主函数
int main(){
int arr[] = {1,6,3,5};
int size = sizeof(arr)/sizeof(arr[0]);
printf("排序后:");
int i = 0;
for(;i<size;++i){
printf("%d ",arr[i]);
}
printf("\n");
SelectSort(arr,size);
printf("排序后:");
i = 0;
for(;i<size;++i){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
测试结果显示: