一、选择排序

 

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;
}

}

 

 


  

 

版权声明:本文为samualz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/samualz/p/8515764.html