插入排序

阅读 160

2022-02-11

插入排序的思路

  • 1. 将待排序的数组的第一位看作是有序序列,后面的看作是待排序的无序的序列
  • 2. 从头到尾开始扫描无序的序列,然后把无序数列中的值插入到有序序列的合适的位置

插入排序_待排序

插入排序的代码推导:

package com.edu;

import java.util.Arrays;
/**

  • 插入排序的思路
  • 1. 将待排序的数组的第一位看作是有序序列,后面的看作是待排序的无序的序列
  • 2. 从头到尾开始扫描无序的序列,然后把无序数列中的值插入到有序序列的合适的位置
  • @author daixianren

*
*/
public class InsertDemo {
public static void main(String[] args) {
int arr[] = {98,2,100,18,78,87};
System.out.println("原始数据为:"+Arrays.toString(arr));
insertSort(arr);
}
/**

  • 插入排序
  • @param arr

*/
private static void insertSort(int[] arr) {
// 第一轮排序
int current = arr[1] ;
int index = 1 ;
for(int i = 1 ;i > 0 ;i--) {
if(current < arr[i-1]) {
// 当前的值需要向后面移动一位
arr[i] = arr[i-1] ;
index = i -1 ;
}
}
if(index != 1) {
arr[index] = current ;
}

System.out.println("第一轮排序之后的结果为:"+Arrays.toString(arr));

current = arr[2] ;
index = 2 ;
for(int i = 2 ;i > 0 ;i--) {
if(current < arr[i-1]) {
// 当前的值需要向后面移动一位
arr[i] = arr[i-1] ;
index = i -1 ;
}
}
if(index != 2) {
arr[index] = current ;
}

System.out.println("第二轮排序之后的结果为:"+Arrays.toString(arr));

current = arr[3] ;
index = 3 ;
for(int i = 3 ;i > 0 ;i--) {
if(current < arr[i-1]) {
// 当前的值需要向后面移动一位
arr[i] = arr[i-1] ;
index = i -1 ;
}
}
if(index !=3) {
arr[index] = current ;
}
System.out.println("第三轮排序之后的结果为:"+Arrays.toString(arr));

current = arr[4] ;
index = 4 ;
for(int i = 4 ;i > 0 ;i--) {
if(current < arr[i-1]) {
// 当前的值需要向后面移动一位
arr[i] = arr[i-1] ;
index = i -1 ;
}
}
if(index !=4) {
arr[index] = current ;
}

System.out.println("第四轮排序之后的结果为:"+Arrays.toString(arr));
//
current = arr[5] ;
index = 0 ;
for(int i = 5 ;i > 0 ;i--) {
if(current < arr[i-1]) {
// 当前的值需要向后面移动一位
arr[i] = arr[i-1] ;
index = i -1 ;
}
}
if(index !=5) {
arr[index] = current ;
}

System.out.println("第五轮排序之后的结果为:"+Arrays.toString(arr));
}
}


插入排序的代码完整版:



精彩评论(0)

0 0 举报