博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构-冒泡排序与选择排序
阅读量:2400 次
发布时间:2019-05-10

本文共 1772 字,大约阅读时间需要 5 分钟。

关于数据结构,本人并没有进行系统的学习过,同时今天也为了加强基础并总结。

于是,重新查阅了许多资料写下这篇博文。

在对冒泡排序的研究过程中我发现了这样一个问题:

正常的冒泡排序是这样的
for (int i = 0; i < a.length - 1; i++) {              for (int j = 0; j < a.length - 1 - i; j++) {                  if (a[j] > a[j + 1]) {                      int t = a[j + 1];                      a[j + 1] = a[j];                      a[j] = t;                  }              }          }

其排序原理是将相领的两个数进行两比较,一轮循环就能将最大或最小的数放到结尾

或者是这样的:

for (int i = 0; i < b.length; i++) {      for (int j = i+1; j < b.length; j++) {          if (b[i] < b[j]) {              int t = b[j];              b[j] = b[i];              b[i] = t;          }      }  }

其排序的原理是,第i个数与i后面的每个数进行比较,如果比他小就交换位置,所以取出在i之后的最大的数放置开头。
而我一直在用的排序是这样的
for (int i = 0; i < b.length; i++) {      for (int j = 0; j < b.length; j++) {          if (b[i] < b[j]) {              int t = b[j];              b[j] = b[i];              b[i] = t;          }      }  }

初学java的时候基础很不扎实,导致我那时候把冒泡排序的j=i+1记成了j=0;

也同时因为我用的这个排序方法最后出来的结果也真的进行了排序,导致我也一直没发现其中的问题。

以同一个数组来举例int[] a = { 2, 5, 6, 9, 7, 4, 3 };
冒泡排序的结果是这样的:
9 2 3 4 5 6 7 
9 7 2 3 4 5 6 
9 7 6 2 3 4 5 
9 7 6 5 2 3 4 
9 7 6 5 4 2 3 
9 7 6 5 4 3 2 
9 7 6 5 4 3 2 
而我的排序是这样的:
9 2 5 6 7 4 3 
2 9 5 6 7 4 3 
2 5 9 6 7 4 3 
2 5 6 9 7 4 3 
2 5 6 7 9 4 3 
2 4 5 6 7 9 3 
2 3 4 5 6 7 9 

举这样一个小例子并记录下来,同时也加强了对基础的掌握。

也希望如果有初学者入门碰到和我一样的问题能够及早的纠正过来。

虽然i=0其中有我暂时还不知道的排序原理也确实能进行一定的排序。
关于选择排序
for (int i = 0; i < a.length-1; i++) {  
int min = i;  
for (int j = i + 1; j < a.length; j++) {  
if (a[min] < a[j]) {  
min = j;  
}  
}  
if (i != min) {  
int tmp = a[min];  
a[min] = a[i];  
a[i] = tmp;  
}  
for(int v=0;v<a.length;v++)   
{  
System.out.print(a[v]+" ");  
}  
System.out.println();  
}  

之前第二种冒泡排序的交换原理是当比较时发现比自己小的数就交换位置。

而选择排序是发现比自己小的数就记下他的下标,循环结束再交换位置。

冒泡排序交换了多次,选择排序交换了一次,交换的次数减少了,所以效率就会略微提高一些。

以上,即为总结的冒泡排序与选择排序。如果错误,感谢指出。

转载地址:http://iriob.baihongyu.com/

你可能感兴趣的文章
11gR2批量操作EM性能监控报表集
查看>>
[转帖]广交会使用频率最高的英语
查看>>
职业经理人影响力自检手册(二)
查看>>
企业如何提好自己的内部需求?
查看>>
[分享]ERP实施工程师笔试题目
查看>>
看板管理概述(zt)
查看>>
IT审计中应注意的几个问题(zt)
查看>>
最美的七十个英语单词
查看>>
中国企业需要精益求精 (zt)
查看>>
第四章 计划工作概述
查看>>
物流基础知识(八)
查看>>
关于BPR和ERP的关系思考 (转载)
查看>>
写作必背200句
查看>>
职业经理人影响力自检手册(一)
查看>>
[HR规划]如何在中小企业进行人力资源规划(zt)
查看>>
ERP实施先要解决人的问题(zt)
查看>>
有效库存:供应链产业切肤之痛 (zt)
查看>>
李嘉诚给年青人提出的53条人生忠告(zt)
查看>>
第23课 企业信息资源规划系列讲堂之一
查看>>
第十七章 控制工作概述
查看>>