标签:结构 数组 system 没有 博客 pre 博文 自己 count
插入排序的基本思想是:将整个数组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 }
标签:结构 数组 system 没有 博客 pre 博文 自己 count
原文地址:https://www.cnblogs.com/sucker/p/10960922.html