插入排序(动图理解)
算法思路
- 从第一个元素开始,该元素可以认为已经被排序;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2~5。 动图:
代码实现
-
简洁版代码
public static void insertSort(int[] array){ int temp=0,j=0; for(int i=1,len=array.length;i<len;i++){ temp=array[i]; j=i; while (j>0 && array[j-1]>temp){ array[j]=array[j-1]; j--; } array[j]=temp; } }
-
完整版代码
package sort; /** * 插入排序 * 从第二个开始,一旦比前面的小就往前面插到自己合适的位置去,就跟打扑克牌抓了牌去插牌差不多 * 2 3 1 5 * 由于3比1大,让3往后移动,再跟2对比,2币1 大那么2也往后移动,直到停下来,把1放到属于自己的位置 * 2 - 3 5 * - 2 3 5 * 1 2 3 5 * @author humorchen */ public class InsertSort { public static void insertSort(int[] array){ int temp=0,j=0; for(int i=1,len=array.length;i<len;i++){ temp=array[i]; j=i; while (j>0 && array[j-1]>temp){ array[j]=array[j-1]; j--; } array[j]=temp; } } public static void print(int[] array){ System.out.println("打印现在的数据"); for(int t:array){ System.out.print(t+" "); } System.out.println(); } public static void main(String[] args) { int[] array={ 4,3,2,5,6,1,3,7}; insertSort(array); print(array); } }
明人不说暗话,动图是从https://www.cnblogs.com/onepixel/articles/7674659.html拿滴
上一篇:
IDEA上Java项目控制台中文乱码