排序算法之选择排序

排序思想:

假如数组有n个数待排序序号为{0......i.....n-1}

 

 

 

select_sort.c

 1 #include"head.h"
 2 
 3 void select_sort(int a[],int pos)
 4 {
 5         int i,j;//用来遍历数组
 6         int temp = 0;//用来临时保存变量
 7         for(i = 0;i < pos - 1;i++)
 8         {//pos - 1轮选择
 9                 int min_index = i;//找出数组中第i小的数的序号
10                 for(j = i + 1;j < pos;j++)
11                 {
12                         if(a[j] <  a[min_index])//j为i后面一个数
13                         {
14                                 min_index = j;
15                         }
16                         //第i小的数,放在第i个位置;
17                                 if(i != min_index)
18                                 {
19                                         temp = a[i];
20                                         a[i] = a[min_index];
21                                         a[min_index] = temp;
22                                 }
23                 }
24         }
25 }

main.c

#include"head.h"

int main()
{
        int val;//保存输入的变量
        int a[MAXLINE];//保存输入的数组
        int pos = 0;//记录输入的值的个数
        printf("请输入一组数据,按Ctrl+D结束\n");
        while(scanf("%d",&val) != EOF)
        {
                a[pos] = val;
                ++pos;
        }
        for(int i = 0; i < pos ;i++)
                printf("%d ",a[i]);
        printf("\n");
        //sort(a,pos);
        select_sort(a,pos);
        for(int i = 0; i < pos ;i++)
                printf("%d ",a[i]);
        printf("\n");
        return 0;

}

 

posted @ 2021-04-08 10:08  8重8  阅读(68)  评论(0)    收藏  举报