黑马程序员技术交流社区
标题:
常见排序以及效率问题
[打印本页]
作者:
adalvik
时间:
2015-4-11 00:12
标题:
常见排序以及效率问题
public class sort {
public static long beginTimer;
public static final int SIZE = 1000;
public static void main(String[] args) {
int[] arr = new int[SIZE];
int i;
for (i = 0; i < SIZE; i++) {
arr[i] = (int) (Math.random() * (System.currentTimeMillis() % Integer.MAX_VALUE)); // 初始化数组
}
showArray(arr);
beginTag();
selectSort(arr);
endTag("selectSort");
showArray(arr);
beginTag();
bubbleSort(arr);
endTag("bubbleSort");
showArray(arr);
beginTag();
shellSort(arr);
endTag("shellSort");
showArray(arr);
}
// 记录排序开始时间
public static void beginTag() {
beginTimer = System.currentTimeMillis();
}
// 标记排序结束时间
public static void endTag(String tips) {
long endTimer = System.currentTimeMillis();
System.out.println(tips+"排序耗时:" + (endTimer - beginTimer));
}
// 选择排序
public static void selectSort(int arr[]) {
for (int i = 0; i < arr.length - 1; 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;
}
}
}
}
// 冒泡排序
public static void bubbleSort(int arr[])
{
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// Shell排序
static void shellSort(int[] arr) {
int i, j, h;
int r, temp;
int x = 0;
for (r = arr.length / 2; r >= 1; r /= 2) // 划组排序
{
for (i = r; i < arr.length; i++) {
temp = arr[i];
j = i - r;
while (j >= 0 && temp < arr[j]) {
arr[j + r] = arr[j];
j -= r;
}
arr[j + r] = temp;
}
x++;
}
}
public static void showArray(int arr[]) {
for (int i = 0; i < arr.length - 1; i++) {
System.out.print(arr[i] + ",");
}
System.out.print("\n");
}
}
复制代码
selectSort排序耗时:4
bubbleSort排序耗时:6
shellSort排序耗时:0
作者:
怀念子龙
时间:
2015-4-11 09:22
4,6,0是什么意思?
作者:
label
时间:
2015-4-14 11:17
还有 二分法排序这些都没写吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2