选择排序

来源:互联网 发布:数据可视化职位 编辑:程序博客网 时间:2024/06/07 07:36
#include <stdio.h>


/*
选择排序:
思路:
每次循环,选择最小的,和最前的交换位置


第一次,我们选择所有里最小的放第一个位子,
第二次,选择第二个到最后一个中最小的放第二个位置,
。。。


代码实现:
我们记录每次循环比较里,最小的那个的键号,最后拿最小的和对应位置的交换位置
*/


void SelectionSort(int* arr,int len){
int i,j,k,tmp;


printf("Array before sorting:\n");
for(i=0;i<len;++i){
printf("%d\t",arr[i]);
}

for(i=0;i<len-1;++i){
k = i;
for(j=i+1;j<len;++j){
if(arr[j] < arr[k]){
k = j;
}
}
if(i != k){
tmp = arr[i];
arr[i] = arr[k];
arr[k] = tmp;
}
}

printf("\nArray after sorting:\n");
for(i=0;i<len;++i){
printf("%d\t",arr[i]);
}


printf("\n");
getchar();


}


int main(void){
int i_arr[] = {12,21,23,32,34,43,45,54,56,65,67,76,78,87,78,89,98,89,90};
int i_arr_size;


i_arr_size = sizeof(i_arr) / sizeof(i_arr[0]);

SelectionSort(i_arr,i_arr_size);


return 0;
}
0 0
原创粉丝点击