/** *创建显示类,提供显示方法。 */ class ShowFonction { private int[] s_arr; ShowFonction(int[] i_arr){ this.s_arr = i_arr; show(s_arr); } public void show(int[] arrs){ int lang = arrs.length; System.out.print("["); for (int i = 0;i < lang ;i++ ) { if(i<lang-1) System.out.print(arrs[i]+","); else System.out.print(arrs[i]+"]"); } System.out.println(); } } /** *创建排序类,提供排序方法 */ class Temp { public void exchange(int[] i_arr,int a,int b){ int temp = i_arr[a]; i_arr[a] = i_arr[b]; i_arr[b] = temp; } } /** *直接排序。 */ class SortFonctionDirect extends Temp { public void sortDirect(int[] s_arr){ for (int i = 0;i < s_arr.length ;i++ ) { for (int j=i+1;j< s_arr.length ;j++ ) { if (s_arr[i]>s_arr[j]) exchange(s_arr,i,j); } } } } /** *冒泡排序 */ class SortFonctionBubble extends Temp { public void srotBubble(int[] s_arr){ for (int i = 0;i < s_arr.length;i++ ) { for (int j=0;j < s_arr.length-i-1;j++) { if(s_arr[j]>s_arr[j+1]) exchange(s_arr,j,j+1); } } } } /** *快速排序 */ class SrotFonctionFast extends Temp { public void srotFast(int[] s_arr){ int num = s_arr[0]; int index = 0; for (int i= 0;i < s_arr.length-1;i++ ) { for (int j = i+1;j<s_arr.length;j++) { if(num > s_arr[j]){ num = s_arr[j]; index = j; } } if(index!=i){ exchange(s_arr,i,index); } num = s_arr[i+1]; //记录下次比较的数据 index = i+1;//记录下次置换的角标 } } } class SrotToolClass { public static void main(String[] args) { int [] srot_arr1 = {30,-2,56,33,65,-12,120,500,87,120}; int [] srot_arr2 = {30,-2,56,33,65,-12,120,500,87,120}; int [] srot_arr3 = {30,-2,56,33,65,-12,120,500,87,120}; ShowFonction sf = new ShowFonction(srot_arr1); System.out.println("\n"+"------------1,直接排序------------"); SortFonctionDirect sd = new SortFonctionDirect(); sd.sortDirect(srot_arr1); sf.show(srot_arr1); System.out.print("\n"+"------------2,冒泡排序------------"+"\n"); SortFonctionBubble sb = new SortFonctionBubble(); sb.srotBubble(srot_arr2); sf.show(srot_arr2); System.out.print("\n"+"------------3,快速排序------------"+"\n"); SrotFonctionFast st = new SrotFonctionFast(); st.srotFast(srot_arr3); sf.show(srot_arr3); } }
显示结果:
-----------初始数据int数组-----------
[30,-2,56,33,65,-12,120,500,87,120]
------------1,直接排序------------
[-12,-2,30,33,56,65,87,120,120,500]
------------2,冒泡排序------------
[-12,-2,30,33,56,65,87,120,120,500]
------------3,快速排序------------
[-12,-2,30,33,56,65,87,120,120,500]
说明:
上述方法,可以不用建立类来完成,但是我这里是想熟练继承的关系。如果真要实现,建议就用一个类不同方法调用即可。