- public class InsertTest
- {
- public static void main(String[] args)
- {
- int[] a = {2,35,3,6,4,7,8};
- int[] b = insertSort(a);
- for(int i=0; i<b.length; i++){
- System.out.println(b[i]);
- }
- }
- /*
- 插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。
- */
- public static int[] insertSort(int[] a){
- for(int i=1; i<a.length; i++){
- int num = a[i];//取出要进行插入排序的值
- int j = i-1;//进行对比当前值的下标
- while (j>=0&&a[j]>num)//取出的值往前比,直到比到下标为0,或者当前值小于取出的值
- {
- a[j+1] = a[j];//当前值大于取出的值,元素向后移一位,为插入的值空出位置
- j--;//当前值前移一位
- }
- a[j+1] =num;//上面的循环结束,得到插入的位置,将值放入
- }
- return a;
- }
- }
复制代码 |