Java基础--冒泡排序、快速排序和直接排序。

/**
*创建显示类,提供显示方法。
*/
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]

说明:

上述方法,可以不用建立类来完成,但是我这里是想熟练继承的关系。如果真要实现,建议就用一个类不同方法调用即可。

猜你喜欢

转载自blog.csdn.net/u013251413/article/details/80537584