本文主要是介绍十大经典排序算法(未完待续...),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
冒泡排序
冒泡排序原理:两两比较相邻元素,如果前面的元素比后面的大就进行交换。(大的泡泡浮上去)
//冒泡排序static public void BubbleSort() {for (int i = 1; i < arr.length; i++) {for (int j = 0; j < arr.length - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}
时间复杂度O(n^2)
选择排序
//选择排序static public void ChooseSort() {for (int i = 0; i < arr.length; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}}
时间复杂度O(n^2)
插入排序
//插入排序static public void InsertSort() {for (int i = 1; i < arr.length; i++) {int insertVal = arr[i];int j = i - 1;while (j >= 0) {if (arr[j] > insertVal) {arr[j + 1] = arr[j];j--;} else {break;}}arr[j + 1] = insertVal;}}
希尔排序
//希尔排序static public void ShellSort() {int n = arr.length;for (int step = n / 2; step >= 1; step /= 2) {//进行插入排序for (int i = step; i < n; i++) {//对每个区间进行插入排序for (int j = i; j < n; j += step) {int indexVal = arr[j];int k = j - step;while (k >= 0) {if (arr[k] > indexVal) {arr[k + step] = arr[k];k -= step;} else {break;}}arr[k + step] = indexVal;}}}}
归并排序
将两个有序数组合并成一个有序数组
这篇关于十大经典排序算法(未完待续...)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!