数据结构-插入排序

Posted sucker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构-插入排序相关的知识,希望对你有一定的参考价值。

插入排序的基本思想是:将整个数组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  

 

以上是关于数据结构-插入排序的主要内容,如果未能解决你的问题,请参考以下文章

7种基本排序算法的Java实现

KDoc:插入代码片段

排序相关代码(数据结构笔试复测Leecode牛客)

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

数据结构图解七大排序

插入排序详解