选择排序

原理:对数组进行数组长度大小i的遍历,每次遍历找出最小或最大的那个值与第i个数交换位置(即第一次与第一个数交换,第二次与第二个数交换,第i次与第i个数交换)。

c语言代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <stdlib.h>
int main(){
int a[]={3,1,6,8,4,2,9};
int len = sizeof(a)/sizeof(a[0]);
for (int k=0;k<len ;k++){
printf("%d ",a[k]);
}
printf("\n");
// 这里做遍历为了调试看初始a数组
for (int i =0 ;i<len ;i++){
for (int j= i+1;j<len;j++){
int mid_temp;// 中间变量做交换
if (a[i]>a[j]){
mid_temp = a[j];
a[j] = a[i];
a[i] = mid_temp;
}
}
// 每次排序好之后对数组进行一次遍历
for (int k=0;k<len ;k++){
printf("%d ",a[k]);
}
printf("\n");
}
system("pause");
return 0;
}