算法——>>选择排序
程序1:从大到小
#include <stdio.h>
2
3 void xuanzepaixu(int n, int arr[])
4 {
5 for(int k=0; k<n-1; k++)
6 {
7 int max_i=k; //记录最大值下标
8 for(int i=max_i+1; i<n; i++)
9 {
10 //两数判断最大值
11 if(arr[i]>arr[max_i])
12 {
13 //更新最大值下标
14 max_i = i;
15 }
16 }
17 //内循环结束,将最大值与arr[k]做交换
18 if(k != max_i)
19 {
20 int temp = arr[max_i];
21 arr[max_i] = arr[k];
22 arr[k] = temp;
23 }
24 }
25 return ;
26 }
27
28 int main(int argc, const char *argv[])
29 {
30 int arr[] = {15,30,21,34,78};
31 int size = sizeof(arr)/sizeof(arr[0]);
32 xuanzepaixu(size, arr);
33
34 for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
35 {
36 printf("%d ", arr[i]);
37 }
38 putchar(10);
39
40 return 0;
41 }
若从小到大排序:
void xuanzepaixu(int n, int arr[])
{
for(int k=0; k<n-1; k++)
{
int max_i=k; //记录最大值下标
for(int i=max_i+1; i<n; i++)
{
//两数判断最小值
if(arr[i]<arr[max_i])
{
//更新最大值下标
max_i = i;
}
}
//内循环结束,将最小值与arr[k]做交换
if(k != max_i)
{
int temp = arr[max_i];
arr[max_i] = arr[k];
arr[k] = temp;
}
}
return ;
}