現在我在高中12年級學習Java編程課程。現在我明天有一個考試,我正在努力學習。該測試是一個實際測試,我必須採用基本數據或對象,並使用插入排序,選擇排序和合並排序將它們排序爲原始數據,數組或數組列表。現在我把它放在原始數據上。只是我在將對象排序到數組和列表中非常困難。我有選擇排序數組和數組列表,所以它只是合併排序和插入排序我有親愛的麻煩。我只是不知道該怎麼做。使用插入排序,選擇排序和合並排序
非常感謝您的幫助。
爲了簡化問題,我想知道如何在這兩個類轉換爲名爲Circle
我的代碼第一塊送過來隨機界對象進行排序,然後將其送入我的其他類進行排序。我的最後一個代碼塊對它進行排序。
package Merge_Sort_Objects_Array;
import java.util.Scanner;
import java.lang.Math;
public class TestSorts {
public static void displayArray(int[] array){
for (int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
System.out.println("\n");
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numItems;
int[] test;
System.out.print("Enter number of elements: ");
numItems = input.nextInt();
/* populate array with random integers */
test = new int[numItems];
for (int i=0; i < test.length; i++){
test[i] = (int)(100 * Math.random());
}
System.out.println("Unsorted:");
displayArray(test);
mergesort.mergesort(test, 0, test.length - 1);
System.out.println("Sorted: ");
displayArray(test);
}
}
package Merge_Sort_Objects_Array;
public class mergesort {
/**
* Merges two sorted portion of items array
* pre: items[start.mid] is sorted. items[mid+1.end] sorted. start <= mid <= end
* post: items[start.end] is sorted
*/
private static void merge(int[] items, int start, int mid, int end){
int[] temp = new int[items.length];
int pos1 = start;
int pos2 = mid + 1;
int spot = start;
while (!(pos1 > mid && pos2 > end)){
if ((pos1 > mid) || ((pos2 <= end) &&(items[pos2] < items[pos1]))){
temp[spot] = items[pos2];
pos2 +=1;
}else{
temp[spot] = items[pos1];
pos1 += 1;
}
spot += 1;
}
/* copy values from temp back to items */
for (int i = start; i <= end; i++){
items[i] = temp[i];
}
}
/**
* mergesort items[start..end]
* pre: start > 0, end > 0
* post: items[start..end] is sorted low to high
*/
public static void mergesort(int[] items, int start, int end){
if (start < end){
int mid = (start + end)/2;
mergesort(items, start, mid);
mergesort(items, mid + 1, end);
merge(items, start, mid, end);
}
}
}
更好嗎?
好的格雷格,這裏是更新的testSorts類。現在我將它們全部更改爲Circle而不是int,但是我仍然在之前發現的那個錯誤中找到了該錯誤。
public class TestSorts {
public static void displayArray(Circle[] array){
for (int i = 0; i < array.length; i++){
System.out.print(array[i] + " ");
}
System.out.println("\n");
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numItems;
Circle[] test;
System.out.print("Enter number of objects: ");
numItems = input.nextInt();
/* populate array with random integers */
test = new Circle[numItems];
for (int i=0; i < test.length; i++){
test[i] = new Circle((int)(10 * Math.random() + 1));
}
System.out.println("Unsorted:");
displayArray(test);
mergesort.mergesort(test, 0, test.length - 1);
System.out.println("Sorted: ");
displayArray(test);
}
}
這有幫助嗎?
你的問題是什麼?您能否顯示一些您遇到問題的代碼? –