数据结构-插入排序

插入排序的基本思想是:将整个数组a分为有序和无序的两个部分。前者在左边,后者在右边。开始有序的部分只有a[0] , 其余都属于无序的部分。每次取出无序部分的第一个(最左边)元素,把它加入有序部分。假设插入合适的位置p,则原p位置及其后面的有序部分元素都向右移动一个位置,有序的部分即增加了一个元素。一直做下去,直到无序的部分没有元素。
---------------------
作者:little pepper
来源:CSDN
原文:https://blog.csdn.net/qq_41045071/article/details/81053924
版权声明:本文为博主原创文章,转载请附上博文链接!

以下是我按照插入排序的基本思想自己写的代码:

 1 package com.wsy;
 2 
 3 public class InsetSort {
 4     public static void main(String[] args) {
 5         int[]a = {6,1,4,8,2,3,9,7,10,5};
 6         int insetData;
 7         int count = 0;
 8         for(int i=1; i< a.length; i++)
 9         {
10             count++;
11             insetData = a[i];
12             for(int j =0; j < i; j++)
13             {
14                 count++;
15                 if(a[j] > insetData)    //如果找到了位置
16                 {
17                     for (int k = i-1; k >= j; k--) //使该位置之后的有序部分下标全部+1
18                     {
19                         count++;
20                         a[k+1] = a[k];
21                     }
22                     a[j] = insetData;
23                     break;
24                 }
25             }
26         }
27         System.out.println("该排序总共执行了:"+count+"次");
28         for(int d : a)
29         {
30             System.out.print(d+" ");
31         }
32     }
33 }

以下是原博客代码:

 1 void InsertionSort(int a[], int size)
 2 {
 3     for(int i = 1;i < size;i++){
 4     //a[i]是最左边的无序元素,每次循环将a[i]放到合适位置 
 5         for(int j = 0;j < i;j++){
 6             if(a[j] > a[i]){
 7                 //要把a[i]放到位置j,原下标j到i-1的元素都往后移一位 
 8                 int tmp = a[i];
 9                 for(int k = i;k > j;k--;)
10                     a[k] = a[k-1];
11                 a[j] = tmp;
12                 break; 
13             }        
14         } 
15     }
16 } 

 

posted @ 2019-06-01 20:45  oops_w  阅读(676)  评论(0编辑  收藏  举报