排序方法总结

一、时间复杂度《排序方法总结》的三种排序方法

1.1 选择排序

//选择排序
public static void selectionSort(int[] arr) {
	if(arr == null || arr.length < 2)
		return;
	
	for(int i = 0; i < arr.length - 1; i++) {
		int minIndex = i;
		for(int j = i + 1; j < arr.length; j++) {
			minIndex = arr[j] < arr[minIndex] ? j : minIndex;
		}
		swap(arr, i, minIndex);
	}
}

1.2 冒泡排序

//冒泡排序
public static void bubbleSort(int[] arr) {
	if(arr == null || arr.length < 2)
		return;
	
	for(int e = arr.length - 1; e > 0; e--) {
		for(int i = 0; i < e; i++) {
			if(arr[i] > arr[i+1])
				swap(arr, i, i+1);
		}
	}
}

1.3 插入排序

//插入排序
public static void insertSort(int[] arr) {
	if(arr == null || arr.length < 2)
		return;
	
	for(int e = 1; e < arr.length; e++) {
		for(int i = e; i > 0 && arr[i-1] > arr[i]; i--)
			swap(arr, i-1, i);
	}
}

附:swap的两种方法

//swap方法一
public static void swap(int[] arr, int i, int j) {
	int temp = arr[i];
	arr[i] = arr[j];
	arr[j] = temp;
}

//swap方法二
public static void swap(int[] arr, int i, int j) {
	arr[i] = arr[i] ^ arr[j];
	arr[j] = arr[i] ^ arr[j];
	arr[i] = arr[i] ^ arr[j];
}

 

点赞