408数据结构与算法—选择排序(二十)

Posted 王同学要努力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了408数据结构与算法—选择排序(二十)相关的知识,希望对你有一定的参考价值。

【408数据结构与算法】—选择排序(二十)

一、选择排序

选择排序基本思想:在待排序的数据中选出最大(小)的元素放在其最终的位置。

基本思想:

  1. 首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将他与第一个记录交换
  2. 再通过n-2次比较,从剩余的n-1个记录中找出关键字次小的记录,将他与第二个记录交换
  3. 重复上述操作,共进行n-1趟排序后,排序结束

二、 看图说话


简单选择排序算法

C语言代码实现

  1. 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

  2. 选择排序法的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换。

/**选择排序
 *升序
 */
void Selection_sort(int arr[],int len)

  int i,j;
  int min;
  int tem;
  for(i=0;i<len;i++)
  
      min = arr[i];
      for(j=i+1;j<len;j++)
      
          if(arr[j]<min)
          
           tem = min;
           min = arr[j];
           arr[j] = tem;
          
      
      arr[i] = min;
  

时间复杂度


🤣总结

以上是关于408数据结构与算法—选择排序(二十)的主要内容,如果未能解决你的问题,请参考以下文章

408数据结构与算法—归并排序(二十二)

408数据结构与算法—归并排序(二十二)

408数据结构与算法—基数排序(桶排序)(二十三)

408数据结构与算法—基数排序(桶排序)(二十三)

408数据结构与算法—堆排序(二十一)

408数据结构与算法—堆排序(二十一)