排序算法的一般选择规则,选择排序是最好的排序算法

  排序算法的一般选择规则,选择排序是最好的排序算法

  基本思想在每次行程中从待排序的数据元素中选择最小(或最大)的元素,放在待排序序列的最前面,直到所有待排序的数据元素结束。

  具体步骤1。读入的数据存储在数组A. 2中。从a[1]到A [n]中选择值最低的元素,与第一个位置的元素交换,然后将值最低的元素放入A [1]中。3.从a[2]到A [n]中选择值最低的元素,与第二个位置的元素交换,然后将值最低的元素放入A [2]中,4.直到第n-1个元素与第n个元素进行比较和排序。方法程序使用两层循环来完成算法,外循环I控制存储当前序列最小值的数组位置,内循环J控制从i 1到N序列中选取最小元素的位置K。

  代码#包含iostream

  使用命名空间std

  int main()

  {

  int n,temp,array[1000];

  CIN n;

  array[0]=n;

  for(int I=1;I=n;我)

  {

  cin阵列[I];

  }

  for(int I=1;I=n;我)

  {

  for(int j=I 1;j=n;j)

  {

  if(array[j] array[i])

  {

  temp=array[I];

  array[I]=array[j];

  array[j]=temp;

  }

  }

  }

  for(int k=1;k=n;k)

  {

  cout数组[k]“”;

  }

  返回0;

  }测试#包含iostream

  #包括cstdio

  #包含cstdlib

  #包括ctime

  使用命名空间std

  int main()

  {

  int n,temp,array[1000];

  //CIN n;

  //array[0]=n;

  //for(int I=1;I=n;我)

  //{

  //cin数组[I];

  //}

  n=1000

  srand(time(NULL));

  for(int I=1;I=n;我)

  array[i]=rand()000;

  for(int I=1;I=n;我)

  {

  for(int j=I 1;j=n;j)

  {

  if(array[j] array[i])

  {

  temp=array[I];

  array[I]=array[j];

  array[j]=temp;

  }

  }

  }

  for(int k=1;k=n;k)

  {

  cout数组[k]“”;

  }

  cout endl

  printf(所用时间=%.7lf ,(double)clock()/CLOCKS _ PER _ SEC);

  返回0;

  }

  分析了算法的时间复杂度,排序的交换操作在0到(n-1)次之间。

  选择的比较运算是(n-1)(n-2n-1)(n-2)……3 2 1 0=n(n-1)/2次。

  所选的赋值操作在0到3 (n-1)次之间。

  比较次数O(n ^ 2),与关键字的初始状态无关,

  总比较次数N=(n-1) (n-2) … 1=n*(n-1)/2。

  交换次数O(n),最好的情况是,已经被订购交换0次;最差交换是n-1次,逆序交换是n/2次。

  交换次数比冒泡排序少得多。因为交换所需的CPU时间比比较所需的时间多,而且n的值较小,所以选择排序比冒泡排序快。

  选择排序是为每个位置选择当前最小的元素,例如,第一个位置的最小元素,其余元素中第二个位置的第二小元素,以此类推,直到第n-1个元素,第n个元素不需要选择,因为只剩下它最大的元素了。

  然后,在一个选择中,如果一个元素比当前元素小,而这个小元素出现在一个等于当前元素的元素后面,交换后稳定性就被破坏了。

  比如序列5 8 5 2 9,我们知道第一个元素5会在第一时间和2交换,所以会破坏原序列中两个5的相对顺序,所以选择性排序是一种不稳定的排序算法。

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: