這個程序主要是爲了熟悉冒泡,選擇,插入三種排序方法。還可以理解靜態方法的使用,和一種比較簡潔的二值交換程序。
import java.util.Scanner;
import java.util.Arrays;
public class manySort{
public static void main(String []args){
Scanner input = new Scanner(System.in);
show("input a num: ");
int count = input.nextInt();
int [] arrays1 = new int [count];
show("input everyone in array");
for(int k =0;k<count;k++){
arrays1[k] = input.nextInt();
}
int [] arrays2 = Arrays.copyOf(arrays1,arrays1.length);
int [] arrays3 = Arrays.copyOf(arrays1,arrays1.length);
// System.out.println(Arrays.toString(arrays2));
show("the result of bubbleSort:");
bubbleSort(arrays1);
printArray(arrays1);
show("the result of selectSort:");
selectSort(arrays2);
printArray(arrays2);
show("the result of insertSort:");
insertSort(arrays3);
printArray(arrays3);
}
public static void show(String name)
{
System.out.println(name);
}
public static void bubbleSort(int [] array)
{
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
array[j] = array[j+1]-array[j]+(array[j+1]=array[j]);
}
}
}
}
public static void selectSort(int [] array)
{
for(int i=0;i<array.length-1;i++){
//System.out.println("OK2");
int min = i;
for(int j=i+1;j<array.length;j++){
//System.out.println("OK3");
if(array[min]>array[j])
min = j;
}
//System.out.println("OK1");
if(i != min)
array[i]=array[min]-array[i]+(array[min]=array[i]);
}
}
public static void insertSort(int [] array)
{
for (int i=1;i<array.length;i++){
int j = i;
int temp = array[i];
while(j>0 && temp<array[j-1]){
array[j] = array[j-1];
j--;
}
array[j] = temp;
}
}
public static void printArray(int[] array)
{
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.print("\n");
}
}
又寫了一遍,啊啊啊!!!
import java.util.Scanner; import java.util.Arrays; public class manySort{ public static void main(String[] args){ Scanner input = new Scanner(System.in); System.out.println("please input the number of array: "); int num = input.nextInt(); int[] arrays = new int[num]; System.out.println("please input everyone in array: "); for(int i=0;i<arrays.length;i++){ arrays[i] = input.nextInt(); } Buddle b = new Buddle("BuddleSort"); Select s = new Select("SelectSort"); Insert i = new Insert("InsertSort"); SelectSort S = new SelectSort(); // S.Set(b); S.Set(s); //S.Set(i); S.Sorts(arrays); S.Print(arrays); } } //class寫成Class,注意形參的設計 class SelectSort{ private Sort s = null; public void Set(Sort s){ this.s =s; } public void Sorts(int[] arrays){ s.Algorithm(arrays); } public void Print(int[] arrays){ s.printArr(arrays); } } abstract class Sort{ private String name; public Sort(String name){ this.name = name; } public abstract void Algorithm(int[] arrays); public String getName(){ return name; } public void printArr(int[] arrays){ if(arrays.length == 0){ System.out.println("NO Value"); } System.out.print(getName()+":"); boolean flag = false; //flag 不能寫成int類型的,boolean——false,true for(int i:arrays){ //for循環 if(!flag){ flag = true; }else{ System.out.print("<"); } System.out.print(i); } } } class Buddle extends Sort{ public Buddle(String name){ super(name); } public void Algorithm(int[] arrays){ for(int i=0;i<arrays.length-1;i++) { for(int j=0;j<arrays.length-1-i;j++) { if(arrays[j]>arrays[j+1]){ arrays[j] = arrays[j+1]-arrays[j]+(arrays[j+1]=arrays[j]); } } } } } class Select extends Sort{ public Select(String name){ super(name); } public void Algorithm(int[] arrays){ int min; for(int i=0;i<arrays.length-1;i++) { min = i; for(int j=i+1;j<arrays.length;j++){ if(arrays[min]>arrays[j]){ min = j; } } //這一點沒想好 if(i != min){ arrays[i] = arrays[min]-arrays[i]+(arrays[min]=arrays[i]); } //arrays[i] = arrays[min]; } } } class Insert extends Sort{ public Insert(String name){ super(name); } public void Algorithm(int[] arrays){ int j; int temp; for(int i=1;i<arrays.length;i++){ j = i; temp = arrays[i]; while(j>0&&temp<arrays[j-1]) { arrays[j] = arrays[j-1]; j--; } arrays[j] = temp; } } }