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