选择排序

找到未排序的数据中的最小的数的下标;让他与未排序的数列第一个数做交换;则第一个数就是有序序列的最后一个元素;再把未排序的序列按以上操作继续做; 比如:

未排序序列第一个数下标   比较次数  确定序列数

      0        n-1      1

      1        n-1-1     2

      ......

      n-1                           0                       n(最后一次不需要比较就可以确定序列,所以选择排序的比较次数数n-1次)

void chosesort(int *arr, int n)

{

  int min = 0;

  for(int i = 0; i < n-1; i++)  //未排序的第一个序数的下标

  {

    min = i;

    for(j = i+1; j < n; j++)  //找出未排序的最小值下标

    {

      if(arr[min] < arr[j])   min = j;

    }

    swap(arr, i, min);

  }

}

posted @ 2021-11-21 22:01  代码有余  阅读(45)  评论(0)    收藏  举报