【Java】数据结构-插入排序法

admin 2022年1月10日03:30:46评论10 views字数 1524阅读5分4秒阅读模式

插入排序法

  • 从[0,i)每一位跟自己i-1进行比较大小,如果小,就交换到前面,如果大就不变。

插入排序法执行截图

image-20210624185045631

插入排序法代码(完整)

InsertionSort.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class InsertionSort {

private InsertionSort(){} //私有类

public static <E extends Comparable<E>> void sort(E[] arr){

for(int i = 0 ; i < arr.length ; i++){
// 将arr[i]插入到合适的位置
// for(int j = i ; j > 0; j--) //不断和前面的值比较,小就交换,大就结束
// if(arr[j].compareTo(arr[j-1])<0)
// swap(arr, j , j-1);
// else break;
for(int j = i; j > 0 && arr[j].compareTo(arr[j-1])<0; j-- )
swap(arr,j,j-1);
}
}

private static <E> void swap(E[] arr, int i , int j){

E t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
public static void main(String[] args) {

int[] dataSize = {10000, 100000};
for (int n : dataSize) {
Integer[] arr = ArrayGenerator.generateRandomArray(n, n);
SortingHelper.sortTest("InsertionSort", arr);

}
}
}

SortingHelper.java(延续了前面的选择排序法)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class SortingHelper {

private SortingHelper(){}

public static <E extends Comparable<E>> boolean isSorted(E[] arr){

for(int i = 1; i< arr.length; i++)
if (arr[i - 1].compareTo(arr[i]) > 0)
return false;
return true;
}

public static <E extends Comparable<E>> void sortTest(String sortname, E[] arr){
long startTime = System.nanoTime();
if(sortname.equals("SelectionSort"))
SelectionSort.sort(arr);
else if(sortname.equals("InsertionSort"))
InsertionSort.sort(arr);
long endTime = System.nanoTime();
for(E e:arr){
System.out.println(e);
}


double time = (endTime - startTime) / 1000000000.0; //纳米要/9个零

if(!SortingHelper.isSorted(arr))
throw new RuntimeException(sortname + "failed");
System.out.println(String.format("%s , n = %d : %f s ", sortname, arr.length, time));
}
}

FROM:gylq.gitee Author:孤桜懶契

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月10日03:30:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【Java】数据结构-插入排序法http://cn-sec.com/archives/729936.html

发表评论

匿名网友 填写信息