插入排序
@Test public void test() { int[] a={5,4,5,8,6,3,5,8,4,9}; int len=a.length; for(int i=1;i<len;i++){ int data=a[i]; int j=i-1; for(;j>=0;j--){ if(data<a[j]){ a[j+1]=a[j]; }else{ break; } } a[j+1]=data; System.out.println("第"+i+"次排序"); for(int k=0;k<len;k++){ System.out.print(a[k]+" "); } System.out.println(); } }
变量i前面的数组段是有序的,从i开始逐个取数据插入i前面的有序数组。
插入的比较就是从有序数组中的最后元素开始比较,
以从小到大排序举例
如果遇到比数组下标i的元素大的数,则将大的数向后移一位
如果小于等于,则直接退出比较循环,将i数组下标对应的元素赋值给跳出循环时的 j下标的下一位
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]