【发布时间】:2019-12-20 01:39:16
【问题描述】:
问题: 1. 对最差情况进行排序,在所有排序方法中只显示一半的结果。
目标: 1. 使用冒泡排序、插入排序和选择排序对最佳情况、平均情况和最差情况进行排序。
尝试过的修复: 1. 改变数组的值。 2.检查排序本身。 3. 使大小写值表明它是正确的。
导入 java.util.Arrays;
公共类随机{
public static void main(String[] args) {
int[] bestCase = ascRan();
int[] average = ran();
int[] worstCase = desRan();
System.out.println("Best Case: \t\t" + Arrays.toString(bestCase));
System.out.println("Average: \t\t" + Arrays.toString(average));
System.out.println("Worst Case: \t" + Arrays.toString(worstCase));
System.out.println("\nCurrent Time(ms): " + System.currentTimeMillis());
System.out.println("Current Time(ns): " + System.nanoTime());
System.out.println();
//Best Cases
System.out.println("Bubble (Best Case)");
int[]bSortBest = bubbleSort(bestCase);
print(bSortBest);
System.out.println("Insert (Best Case)");
int[]iSortBest = insertionSort(bestCase);
print(iSortBest);
System.out.println("Select (Best Case)");
int[]sSortBest = selectionSort(bestCase);
print(sSortBest);
//Average
System.out.println("Bubble (Average)");
int[]bSortAverage = bubbleSort(average);
print(bSortAverage);
System.out.println("Insert (Average)");
int[]iSortAverage = insertionSort(average);
print(iSortAverage);
System.out.println("Select (Average)");
int[]sSortAverage = selectionSort(average);
print(sSortAverage);
//Worst Cases
System.out.println("Bubble (Worst Case)");
int[]bSortWorst = bubbleSort(worstCase);
print(bSortWorst);
System.out.println("Insert (Worst Case)");
int[]iSortWorst = insertionSort(worstCase);
print(iSortWorst);
System.out.println("Select (Worst Case)");
int[]sSortWorst = selectionSort(worstCase);
print(sSortWorst);
}
//Random 0-99
public static int[] ran() {
int[] a = new int[101];
for (int i = 0; i <= a.length -1; i++) {
a[i] = (int) (Math.random() * 100);
}
return a;
}
//0-99
public static int[] ascRan() {
int[] b = new int[100];
int min;
int max = 99;
for(min = 0; min <= max; min++){
b[min] = min;
}
return b;
}
//99-0
public static int[] desRan() {
int[] c = new int[100];
int min;
int max = 99;
for(min = 0; min <= max; min++){
c[min] = max;
max--;
}
return c;
}
public static int[]bubbleSort(int[] arr){
int temp;
for(int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > (arr[j + 1])) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
public static int[]insertionSort(int[] arr){
for (int i = 1; i < arr.length; i++){
int key = arr[i];
int j= i-1;
while (j >= 0 && arr[j] > key){
arr[j+1] = arr[j];
j--;
}
arr[j+1]= key;
}
return arr;
}
public static int[]selectionSort(int[] arr) {
for(int i = 0; i < arr.length-1; i++) {
int minimum = i;
for(int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[minimum]) {
minimum = j;
}
int temp = arr[minimum];
arr[minimum] = arr[i];
arr[i] = temp;
}
}
return arr;
}
public static void print(int arr[]) {
int n = arr.length;
for(int i = 0; i < n; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("\nCurrent Time(ms): " + System.currentTimeMillis());
System.out.println("Current Time(ns): " + System.nanoTime());
System.out.println();
}
}
冒泡排序的平均情况 0 1 1 2 2 4 5 5 6 7 8 10 14 15 16 18 21 21 22 22 23 27 28 30 31 33 34 35 36 36 37 40 40 41 42 42 44 45 46 46 47 49 55 57 57 558 60,6076 77 77 74 78 79 79 80 80 99 99 99 99 99 99 99 99 97 当前时间(毫秒):1565701640559 当前时间(ns):91934126771600
冒泡排序的最坏情况 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 51 52 57 54 55 56 57 57 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 97 98 99 0 当前时间(毫秒):1565701640580 当前时间(ns):91934147301100
插入排序的最坏情况 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50个 当前时间(毫秒):1565701640587 当前时间(ns):91934154307600
选择排序的最坏情况 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50个 当前时间(毫秒):1565701640589 当前时间(ns):91934156292200
1 在排序结束时具有无效值 2,3,4 不显示数字 1-49
【问题讨论】:
-
冒泡排序:
for(int j = 1; j < (arr.length - 1);j++){为什么是-1? -
修复了冒泡排序...将更新问题
-
感谢您的帮助...因此创建了我自己的版本
-
最坏的情况......我仍然知道我的问题到底是什么。
标签: arrays sorting bubble-sort insertion-sort selection-sort