java-实现两种排序方法

/*
对给定数组进行排序
{5,7,2,8,9,1,3,4}

*/
class ArrayTest2
{
/*
选择排序
内循环结束一次,最值出现在头角标位置上
*/
public static void SelectSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=1+x;y<arr.length;y++)
{
if(arr[x]>arr[y])
{
/*
int temp=arr[x];
arr[x]=arr[y];
arr[y]=temp;
*/
swap(arr,x,y);//java中已经定义好的一种排序方式,开发中,要使用该句代码。
}

}
}
}
/*
冒泡排序
*/
public static void bubbleSort(int[] arr)
{
for(int x=0;x<arr.length-1;x++)
{
for(int y=0;y<arr.length-x-1;y++)//-x:让每一次比较的元素减少,-1:避免角标越界。
{
if(arr[y]<arr[y+1]) 
{
/*
int temp=arr[y];
arr[y]=arr[y+1];
arr[y+1]=temp;
*/
swap(arr,y,y+1);
}
}
}

}
/*
发现无论什么排序,都需要对满足条件的元素进行位置互换。
所以可以把这部分相同的代码提取出来,单独封装成一个函数。
*/
public static void swap(int[] arr,int a,int b)
{
int temp=arr[a];
arr[a]=arr[b];
arr[b]=temp;
}
public static void main(String[] args)
{
int[] arr={5,7,2,8,9,1,3,4}; 
//排序前
printArray(arr);
//排序s
//SelectSort(arr);
//排序后 
bubbleSort(arr);
printArray(arr);
}
public static void printArray(int[] arr)
{
System.out.print("[");
for(int x=0;x<arr.length;x++)
{
if(x!=arr.length-1)
System.out.print(arr[x]+",");
else
System.out.println(arr[x]+"]");
}

}
}

 

posted @ 2015-07-25 14:57  IT苦力工  阅读(422)  评论(0编辑  收藏  举报