冒泡排序算法和选择排序算法,冒泡排序算法的正确理解

  冒泡排序算法和选择排序算法,冒泡排序算法的正确理解

  思考基本的N个元素,从第一个开始,依次比较相邻两对是否逆序(前大后小)。如果是逆序,交换两个元素,即第一个和第二个比,然后第二个和第三个比,然后第三个和第四个比,如果是逆序,交换两个元素,将原N元排序问题转化为n-1元排序问题。第二轮从第一轮开始,然后比较两个相邻元素是否逆序。如果顺序相反,交换这两个元素,直到n-2和n-1被比较。这样,n-1轮过后,排队就是有序排队了。

  具体步骤1。读入的数据存储在数组A. 2中。比较前后两个相邻的数据,如果前面的数据大于后面的数据,就交换这两个数据。3.遍历一次数组的第0个数据到第n-1个数据后,最大的数据“冲”到数组的第N-1个位置。4.n=n-1。如果n不为0,重复前两步,否则排序完成。实现程序使用两层循环来完成算法,外循环I控制每轮比较要进行多少次。第一轮比较是n-1次,第二轮比较是n-2次,而上一轮对比是1次。内循环J控制每轮中两个相邻元素是否逆序I次,如果逆序,则交换两个元素。

  代码#包含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;我)

  {

  bool ok=true

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

  {

  if(数组[j]数组[j 1])

  {

  ok=假;

  temp=array[j 1];

  array[j 1]=array[j];

  array[j]=temp;

  }

  }

  如果(ok)破;

  }

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

  {

  cout数组[I]“”;

  }

  返回0;

  }测试#包含iostream

  #包括cstdio

  #包含cstdlib

  #包括ctime

  使用命名空间std

  int main()

  {

  int n,temp,array[1000];

  //CIN n;

  //array[0]=n;

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

  //{

  //cin数组[I];

  //}

  n=1000

  srand(time(NULL));

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

  array[i]=rand()000;

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

  {

  bool ok=true

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

  {

  if(数组[j]数组[j 1])

  {

  ok=假;

  temp=array[j 1];

  array[j 1]=array[j];

  array[j]=temp;

  }

  }

  如果(ok)破;

  }

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

  {

  cout数组[I]“”;

  }

  cout endl

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

  返回0;

  }

  算法时间复杂度分析如果文件的初始状态为正序,则一次扫描即可完成排序。

  所需的关键字比较次数C和记录移动次数M都达到最小值:C min=n-1,M min=0。

  因此,冒泡排序的最佳时间复杂度为O(n)。

  如果初始文件是逆序的,就需要n-1排序。

  每次排序行程需要比较关键字n-i次(1in-1),每次比较必须移动记录三次才能到达交换记录位置。在这种情况下,比较和移动的次数达到最大值:

  冒泡排序最坏的时间复杂度是O(n 2)。

  综上所述,冒泡排序的总平均时间复杂度为O(n 2)。

  稳定性冒泡排序的算法是将小元素向前调整或大元素向后调整。

  比较是两个相邻元素之间的比较,交换也发生在这两个元素之间。

  所以,如果两个元素相等,就不会再交换;如果两个相等的元素不相邻,那么即使这两个元素通过前面的两两交换相邻,此时也不会交换,所以前后相同元素的顺序没有变化,所以冒泡排序是一种稳定的排序算法。

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

郑重声明:本文由网友发布,不代表盛行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各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: