我写的一个对整型数组进行升序或降序的排序方法,但我不知道这算什么排序法大家看看:=============================================Java Code========================================/**
 * 对32位整型数组中的元素快速按降序排列的方法
 * @param array 用户定义的数组
 * @param style 用户定义的排序方式
 */

public static void quickSort(int[] array,String style)
{
int temp=0;
for (int i = 0; i < array.length; i++) 
{
for (int j = array.length-1; j > 0; j--) 
{
if(style.toUpperCase().equals("DESC"))
{
if(array[j-1]<array[j])
{
temp=array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
else if(style.toUpperCase().equals("ASC"))
{
if(array[j-1]>array[j])
{
temp=array[j-1];
array[j-1]=array[j];
array[j]=temp;
}
}
}
}
}
================================================End===========================================

解决方案 »

  1.   

    I'm LZ做个补充:问题中的方法可以对32位整型数组进行升序或降序排列,方法中第二个参数是制定排序规则的,asc:升序,desc:降序。
      

  2.   

    这不就是冒泡么。for (int j = array.length-1; j > 0; j--) 
    这句尽管没错但可以改进,你想啊,你每次都把最小的送到头部了,
    那下一次循环中为什么还要和j[0]比较呢?j[0]必然已经是最小的了。
    改成经典的会好很多:
     
    for (int i = 0; i < ar.length; i++) {
    for (int j = 0; j < ar.length - i - 1; j++) {
    if (ar[j] < ar[j + 1]) {
    int tmp = ar[j + 1];
    ar[j + 1] = ar[j];
    ar[j] = tmp;
    }
    }
    rt.add(ar[ar.length - i - 1]);
    }此外,你完全可以把style的判断放在函数入口处做,你这样每次if都判断,效率很低
      

  3.   

    谢谢silenceburn的建议,我采纳!