黑马程序员技术交流社区

标题: 插入排序 [打印本页]

作者: jackhai9    时间: 2014-8-11 22:17
标题: 插入排序
本帖最后由 jackhai9 于 2014-8-12 12:24 编辑

既然一般情况下,插入排序比冒泡排序快一倍,比选择排序还要快一点。那生活中有什么例子能帮助我们更好地理解插入排序吗?

作者: fantacyleo    时间: 2014-8-11 22:36
貌似最经典的例子就是整理手中的扑克牌,使其按牌面数字从小到大或从大到小排列。假设要求从左往右,最小的排在最左边,最大的排在最右边。那么整理过程是:将左边第二张牌跟左边第一张牌比较大小并按顺序排列两张牌,然后将左边第三张牌依次和左边第二张牌、左边第一张牌比较大小,决定左边第三张牌应该放的位置。以此类推。这样,当处理完左边k张牌时,就可以保证这k张牌是有序的。那么当处理完全部牌时,整手牌也就是有序的了
作者: jackhai9    时间: 2014-8-11 23:03
fantacyleo 发表于 2014-8-11 22:36
貌似最经典的例子就是整理手中的扑克牌,使其按牌面数字从小到大或从大到小排列。假设要求从左往右,最小的 ...

这么说,“打够级”摸牌也是啊,原来我小时候就接触了插入排序这么高深的东东啊,哈哈
作者: 黄霄仪    时间: 2014-8-11 23:10
fantacyleo 发表于 2014-8-11 22:36
貌似最经典的例子就是整理手中的扑克牌,使其按牌面数字从小到大或从大到小排列。假设要求从左往右,最小的 ...

果然理解的够透彻,学习了
作者: そ花痕ゐ蝶梦    时间: 2014-8-11 23:24
插入排序不懂,但冒泡排序和选择排序的效率是一样的!
作者: jiangweibin2573    时间: 2014-8-12 02:53

  1. 附上小小代码思想
  2. public static void main(String[] args) {       
  3.         int[] arr = {1,5,3,8,2,7};       
  4.         arr = insert(arr);
  5.         for(int i=0;i<arr.length;i++){
  6.                   System.out.print(arr[i]+" ");
  7.         }
  8. }
  9.        
  10.         //用插入排序完成数组元素从小到大排序
  11. public static int[] insert(int[] arr){
  12.         for(int i=1;i<arr.length;i++){       
  13.                 for(int j=i;j>0;j--){
  14.                         if(arr[j]<arr[j-1]){       
  15.                                 int temp = arr[j];
  16.                                 arr[j] = arr[j-1];
  17.                                 arr[j-1] = temp;
  18.                         }
  19.                         else
  20.                 }
  21.         }
  22.         return arr;
  23. }
复制代码






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2