一 概述
1.双层循环
排序通常由双层循环实现,外层循环控制循环轮数,内层循环实现单次排序。外层循环的索引从1到arr.length-1,内层循环循环次数随外层循环循环次数的增加而减少。
二 冒泡法
1.基本思想
对比相邻的两个元素,如果满足条件,则交换位置,这样就把较大的元素移动到后面了。
2.算法实现
1 2 3 4 5 6 7 | public static int[] bubbleSort(int[] arr) { 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;
}
}
} return arr;
}
|
Salin selepas log masuk
三 直接排序
1.基本思想
从未排序序列中筛选出最大值,放在未排序序列的尾部。外层循环循环一次,交换未排序序列最大值与未排序序列最后一个元素的位置,其他元素位置不变,关键是获取最大值的索引。直接排序比冒泡排序快。
内层循环切入点:假定未排序序列第一个即索引为0的元素为最大值,然后将其与剩余元素进行对比,获取最大值的索引。
2.算法实现
1 2 3 4 5 6 7 8 9 | public static int[] directSort(int[] arr) {int len = arr.length;int index; for (int i = 1; i < len; i++) {
index = 0; for (int j = 1; j <= len - i; j++) { if (arr[index] < arr[j]) {
index = j;
}int temp = arr[len - i];
arr[len - i] = arr[index];
arr[index] = temp;
}
} return arr;
}
|
Salin selepas log masuk
四 反转排序
1.基本思想
交换索引和为arr.length-1的两个元素的位置,只需一层循环,循环次数为arr.length/2-1。
2.算法实现
1 2 3 4 5 | public static int[] reverseSort(int[] arr) { for (int i = 0; i < arr.length / 2; i++) {int temp = arr[i];
arr[i] = arr[arr.length - 1 - i];
arr[arr.length - 1 - i] = temp;
} return arr;
}
|
Salin selepas log masuk
Atas ialah kandungan terperinci 数组排序的详细介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!