标签:时间 一个 循环 oid for style return 原理 下标
原理:先把最大的数放后面,依次比较相邻的两个数,将小数放前面,大数放后面,这样第一次遍历就可以使做大的数放在了后面;第二次继续从起始位置遍历,把较大的数放在了倒数第二个位置,后面以此类推。时间复杂度O(n^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); } } } }
原理:先把最小的数放前面。从下标0开始遍历数组,找到最小的数,把下标0的元素与最小的数交换位置;第二遍从下标1开始找到次小的数并交换位置,后面以此类推。时间复杂度为O(n^2)。
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); } }
标签:时间 一个 循环 oid for style return 原理 下标
原文地址:https://www.cnblogs.com/youngao/p/9743371.html