黑马程序员技术交流社区

标题: 插入排序怎么写? [打印本页]

作者: 蔡锐    时间: 2015-7-21 07:11
标题: 插入排序怎么写?
一直没啥思路,求带注释的源码!
作者: 嘟嘟嘟嘟嘟    时间: 2015-7-21 10:16
  1. public class  InsertTest
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int[] a = {2,35,3,6,4,7,8};
  6.                 int[] b = insertSort(a);
  7.                 for(int i=0; i<b.length; i++){
  8.                         System.out.println(b[i]);
  9.                 }
  10.         }
  11.         /*
  12.         插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。
  13.         */
  14.         public static int[] insertSort(int[] a){
  15.                 for(int i=1; i<a.length; i++){
  16.                         int num = a[i];//取出要进行插入排序的值
  17.                         int j = i-1;//进行对比当前值的下标
  18.                         while (j>=0&&a[j]>num)//取出的值往前比,直到比到下标为0,或者当前值小于取出的值
  19.                         {
  20.                                 a[j+1] = a[j];//当前值大于取出的值,元素向后移一位,为插入的值空出位置
  21.                                 j--;//当前值前移一位
  22.                         }
  23.                         a[j+1] =num;//上面的循环结束,得到插入的位置,将值放入
  24.                 }
  25.                 return a;
  26.         }
  27. }
复制代码





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