临汾山东漯河饰品美体美文
投稿投诉
美文创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品
漯河衢州
兴义眉山
桂林阳泉
玉溪简阳
山东遂宁
永城新余
梧州洛阳
泸州温州
临汾清远
营口常熟
浙江大连
桐乡宜昌

冒泡排序法(详解冒泡排序)

11月15日 斩情道投稿
  冒泡排序法(详解冒泡排序)
  要点
  冒泡排序是一种交换排序。
  什么是交换排序呢?
  交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足次序要求为止。
  算法思想
  它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
  这个算法的名字由来是因为越小的元素会经由交换慢慢浮到数列的顶端,故名。
  假设有一个大小为N的无序序列。冒泡排序就是要每趟排序过程中通过两两比较,找到第i个小(大)的元素,将其往上排。
  以上图为例,演示一下冒泡排序的实际流程:
  假设有一个无序序列{4。3。1。2,5}
  第一趟排序:通过两两比较,找到第一小的数值1,将其放在序列的第一位。
  第二趟排序:通过两两比较,找到第二小的数值2,将其放在序列的第二位。
  第三趟排序:通过两两比较,找到第三小的数值3,将其放在序列的第三位。
  至此,所有元素已经有序,排序结束。
  要将以上流程转化为代码,我们需要像机器一样去思考,不然编译器可看不懂。
  假设要对一个大小为N的无序序列进行升序排序(即从小到大)。
  (1)每趟排序过程中需要通过比较找到第i个小的元素。
  所以,我们需要一个外部循环,从数组首端(下标0)开始,一直扫描到倒数第二个元素(即下标N2),剩下最后一个元素,必然为最大。
  (2)假设是第i趟排序,可知,前i1个元素已经有序。现在要找第i个元素,只需从数组末端开始,扫描到第i个元素,将它们两两比较即可。
  所以,需要一个内部循环,从数组末端开始(下标N1),扫描到(下标i1)。
  核心代码publicvoidbubbleSort(int〔〕list){
  inttemp0;用来交换的临时数
  要遍历的次数
  for(inti0;list。length1;i){
  从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
  for(intjlist。length1;i;j){
  比较相邻的元素,如果前面的数大于后面的数,则交换
  if(list〔j1〕list〔j〕){
  templist〔j1〕;
  list〔j1〕list〔j〕;
  list〔j〕
  }
  }
  System。out。format(第d趟:t,i);
  printAll(list);
  }
  }
  冒泡排序算法的性能
  时间复杂度
  若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数C和记录移动次数M均达到最小值:CminN1,Mmin0。所以,冒泡排序最好时间复杂度为O(N)。
  若初始文件是反序的,需要进行N1趟排序。每趟排序要进行Ni次关键字的比较(1iN1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:
  CmaxN(N1)2O(N2)
  Mmax3N(N1)2O(N2)
  冒泡排序的最坏时间复杂度为O(N2)。
  因此,冒泡排序的平均时间复杂度为O(N2)。
  总结起来,其实就是一句话:当数据越接近正序时,冒泡排序性能越好。
  算法稳定性
  冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。
  所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。
  优化
  对冒泡排序常见的改进方法是加入标志性变量exchange,用于标志某一趟排序过程中是否有数据交换。
  如果进行某一趟排序时并没有进行数据交换,则说明所有数据已经有序,可立即结束排序,避免不必要的比较过程。
  核心代码对bubbleSort的优化算法
  publicvoidbubbleSort2(int〔〕list){
  inttemp0;用来交换的临时数
  booleanbC交换标志
  要遍历的次数
  for(inti0;list。length1;i){
  bC
  从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
  for(intjlist。length1;i;j){
  比较相邻的元素,如果前面的数大于后面的数,则交换
  if(list〔j1〕list〔j〕){
  templist〔j1〕;
  list〔j1〕list〔j〕;
  list〔j〕
  bC
  }
  }
  如果标志为false,说明本轮遍历没有交换,已经是有序数列,可以结束排序
  if(falsebChange)
  
  System。out。format(第d趟:t,i);
  printAll(list);
  }
  }
  完整参考代码packagenotes。javase。algorithm。
  importjava。util。R
  publicclassBubbleSort{
  publicvoidbubbleSort(int〔〕list){
  inttemp0;用来交换的临时数
  要遍历的次数
  for(inti0;list。length1;i){
  从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
  for(intjlist。length1;i;j){
  比较相邻的元素,如果前面的数大于后面的数,则交换
  if(list〔j1〕list〔j〕){
  templist〔j1〕;
  list〔j1〕list〔j〕;
  list〔j〕
  }
  }
  System。out。format(第d趟:t,i);
  printAll(list);
  }
  }
  对bubbleSort的优化算法
  publicvoidbubbleSort2(int〔〕list){
  inttemp0;用来交换的临时数
  booleanbC交换标志
  要遍历的次数
  for(inti0;list。length1;i){
  bC
  从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
  for(intjlist。length1;i;j){
  比较相邻的元素,如果前面的数大于后面的数,则交换
  if(list〔j1〕list〔j〕){
  templist〔j1〕;
  list〔j1〕list〔j〕;
  list〔j〕
  bC
  }
  }
  如果标志为false,说明本轮遍历没有交换,已经是有序数列,可以结束排序
  if(falsebChange)
  
  System。out。format(第d趟:t,i);
  printAll(list);
  }
  }
  打印完整序列
  publicvoidprintAll(int〔〕list){
  for(intvalue:list){
  System。out。print(valuet);
  }
  System。out。
  }
  publicstaticvoidmain(String〔〕args){
  初始化一个随机序列
  finalintMAXSIZE10;
  intarraynewint〔MAXSIZE〕;
  RandomrandomnewR
  for(inti0;MAXSIZE;i){
  array〔i〕random。nextInt(MAXSIZE);
  }
  调用冒泡排序方法
  BubbleSortbubblenewBubbleS
  System。out。print(排序前:t);
  bubble。printAll(array);
  bubble。bubbleSort(array);
  bubble。bubbleSort2(array);
  System。out。print(排序后:t);
  bubble。printAll(array);
  }
  }
  运行结果
投诉 评论

以卵击石是什么意思(鸡蛋碰石头什么意思)我们都听说过一个成语叫做以卵击石,通俗来说就是鸡蛋碰石头。这个成语用来形容不结合自身实际自取灭亡。小的时候我曾经疑惑过一个问题,现在想想挺搞笑的。我当时想的是生的鸡蛋碰到石头会……韩版i9000(韩版三星w21多少钱)韩版i9000(韩版三星w21多少钱)三星GalaxyS系列诞生于2010年3月,那时智能手机厂家还不超过五家以苹果,三星,HTC为第一梯队的代表,也就是从这一刻开始奠定……今日广东省仔猪价格,国内猪肉价格今日价今日仔猪最新价格今日价格、最新报价、行情走势来自于我的钢铁网门户网站,猪e网报价频道为养猪用户提供生猪价格、今日猪价、猪肉价格。生猪均价为34元斤。据国家统计局广东调查总队10……如何买手表(新手买什么手表好)本内容来源于什么值得买APP,观点仅代表作者本人作者:毒师玩表创作立场声明:玩手表毒师是认真的,回顾与值大妈的五年购表历程五年前在值得买网站上种下第一篇文章,直到现……董卿韩红(韩红怒怼董卿全过程)董卿韩红(韩红怒怼董卿全过程)说起央视的美女主持,大家脑海中首先想到的一定是才女董卿了。董卿不仅形象好,气质佳,而且也颇有才华,在央视的许多节目中都出口成章,令人钦佩。……海马福美来怎么样(二手海马福美来怎么样)导语:海马福美来,你有了解过吗?一起看一下海马福美来,这款车子从面试以来,被称为能走进千万家庭的家用轿车,在油耗量上十分有优势,性价比非常高,尤其是它的外观大气,用起来经……冒泡排序法(详解冒泡排序)冒泡排序法(详解冒泡排序)要点冒泡排序是一种交换排序。什么是交换排序呢?交换排序:两两比较待排序的关键字,并交换不满足次序要求的那对数,直到整个表都满足……普兰店市今日猪价1月28玉米价格,地区生猪玉米豆粕甘井子区今天15,最新猪价,内三元,6月或能超8元,阅读数,5月27日猪,06元,长海县04月29日长海县沙河口区旅顺口区普兰店市庄河市中山区金州区西……平长是哪里(什么平)【平长人家温泉水世界】公众号了解景区实时动态238元豪华大双床房一晚双人温泉水上乐园及游泳馆门票限时抢购238元使用有效期2021年5月28日8月30日……户口哪里上(报户口去哪里报)本人情况:省内人,本科,在杭州上班,落户江干,类似情况可以参考我,省外或者其他情况可能不一样嗷!(有余杭姐妹说不一样,所以余杭宝贝看一下官方说明)步骤1:查自己的档案在哪……1万炒股一年最多挣多少(最笨最赚钱的炒股方法)最近股市状况很好,很多人都能乘此机会捞一笔金。有的人投入的资金很少也能赚到两三千,那么1万炒股一年最多挣多少?我们一起来看看。炒股是一件高风险的事情,但是同样也是有着高收……打印机脱机怎么处理(打印机提示脱机状态如何恢复连接)打印机脱机怎么处理(打印机提示脱机状态如何恢复连接)打印机脱机状态怎么解除呢?打印机作为办公设备,除了正常打印之外,不是缺纸就是缺墨,同时也避免不了出现脱机的状态,估计很……
林业怎么样(林业局前景怎么样)美妆排行榜(唯品会彩妆榜单发布)excel怎么激活(excel激活要钱吗)大学什么时候放暑假(大学生几号放暑假)af是什么意思(mf是什么意思的缩写相机)交通局回应桥梁护栏一捏就散环球信息新闻小伙维权因太帅意外爆红网络跨行转账错误多久退回(跨行转账撤销多久退回)日本演员藤木孝去世ge是什么公司(ge通用医疗是外企吗)山东最好的职业学院(山东前十职业技术学院)OWCUSBCDock扩充盒开箱一线10埠扩充80W供电可充最新女生波波头短发大脸圆脸秒变巴掌脸初次约会指南给对方留下最好的第一印象职业生涯自我规划方法正确的职业规划方法此恨不关风与月什么意思此恨不关风与月意思是什么原价13元现价4000元博世ESP芯片黑市价格暴涨300倍产品经理规划产品如何设计产品架构老人想健康长寿,不是多走路和多睡觉,而是保持好心情和营养均衡乡村夜晚破坏性地震是什么缓刑还能上班吗?法律规定是怎样的?易点云办公IT综合解决方案市场的增长动力强劲春养阳气胜良药!这3种养生食材,常吃有利于抗衰老延寿命

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找