常见O(n^2)排序算法解析

Posted samualz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见O(n^2)排序算法解析相关的知识,希望对你有一定的参考价值。

一、选择排序

 

1、原始数组

技术分享图片

 

2、遍历数组找到最小值索引,并将最小值索引与当前遍历索引位置互换

 

技术分享图片

 

3、确定最小位置值,进行下一次遍历

 

技术分享图片

 

4、java代码实现

 

/**
* author:sam
* date:2018/1/26 14:11
* describe:选择排序
*/
public void selectSort(int[] arr){
for (int i = 0; i < arr.length; i++) {
int minIndex = i;
for (int j = i; j < arr.length; j++) {
if(arr[minIndex] > arr[j])
minIndex = j;
}
SortUtils.swap(arr,minIndex,i);
}
}


二、插入排序

  扑克牌整理牌型时思想

1、以[0]位置数据为基点依次遍历后续数据

技术分享图片

 

2、后续数据依次与当前数据进行比较,并将数据插入到合适位置

 

技术分享图片

3、进行下依次插入

技术分享图片

4、java代码实现

/**
* author:sam
* date:2018/3/7 10:49
* describe:插入排序
*/
@Override
public void insertSort(int[] arr) {

for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0 && arr[j] < arr[j-1]; j--){
SortUtils.swap(arr, j, j - 1);
}
}
}

5、插入排序优化

/**
* author:sam
* date:2018/3/7 12:21
* describe:插入排序优化
*/
@Override
public void optimizeInsertSort(int[] arr) {

for (int i = 1; i < arr.length; i++) {
int e = arr[i];
int index = i;
for (int j = i; j > 0 && arr[j-1] > e; j--) {
arr[j] = arr[j - 1];
index = j - 1;
}
arr[index] = e;
}

}

 

 


  

 


























































以上是关于常见O(n^2)排序算法解析的主要内容,如果未能解决你的问题,请参考以下文章

常见排序算法——七大比较类排序算法

Java面试题常见算法总结

常见算法

常见排序算法解析C#

常见的排序算法

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