一、排序
1、选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
package com.wkrj.sort;
import java.util.Arrays;
import org.apache.commons.lang.StringUtils;
/**
* @author
* @version 创建时间:2019年2月11日 下午4:17:41
* 功能:选择排序
*/
public class SelectionSort {
private static int[] selectionSort(int[] array) {
for(int i=0;i<array.length;i++){
int minIndex = i;//每次大循环开始之前将i位置的值默认为最小值
for(int j=i+1;j<array.length;j++){
if (array[j] < array[minIndex]) {
//找到了比minIndex位置更小的值
minIndex = j;
}
}
swap(array, minIndex, i);
}
return array;
}
//交换数组array中两个位置的值
private static void swap(int[] array, int indexOne, int indexTwo) {
int temp = array[indexOne];
array[indexOne] = array[indexTwo];
array[indexTwo] = temp;
}
public static void main(String[] args) {
int[] arr={1,5,4,2,9,20,55,332,6,7,33,43};
int[] selectionSort = selectionSort(arr);
System.out.println(Arrays.toString(selectionSort));
}
}
2、插入排序
插入排序(以从小到大为例):从index为1的元素开始(即数组里的第二个元素),依次向前判断,若该元素比前一个元素小,则将该元素与前一个元素交换位置,直到该元素大于前一个元素,说明该元素已经处在了正确的位置(比前者大后者小),接着是从index为2的元素开始,以此类推。
package com.wkrj.sort;
import java.util.Arrays;
/**
* @author
* @version 创建时间:2019年2月11日 下午4:43:42
* 功能:
*/
public class InsertSort {
private static int[] insertSort(int[] array) {
for(int i=1;i<array.length;i++){
for(int j=i;j>0;j--){
if(array[j]<array[j-1]){
swap(array, j, j-1);
}else{
break;
}
}
}
return array;
}
//交换数组array中两个位置的值
private static void swap(int[] array, int indexOne, int indexTwo) {
int temp = array[indexOne];
array[indexOne] = array[indexTwo];
array[indexTwo] = temp;
}
public static void main(String[] args) {
int[] arr={1,5,4,2,9,20,55,332,6,7,33,43};
int[] selectionSort = insertSort(arr);
System.out.println(Arrays.toString(selectionSort));
}
}
简化
private static int[] insertSort1(int[] array) {
for (int i = 1; i < array.length; i++) {
int element = array[i]; //将这一轮要排序的元素保存起来
int j;//j用来保存这一轮要排序的元素的正确位置
for (j = i; j > 0; j--) {
if (array[j - 1] > element) {
//array[j-1]比这一轮要排序的元素大,那么将array[j-1]向后移动一个位置
array[j] = array[j - 1];
}else {
//array[j-1]比这一轮要排序的元素小,那么当前位置j就是元素的正确位置
array[j] = element;
break;
}
}
}
return array;
}
3、冒泡排序