java两个经典的排序

1.冒泡排序

示例:

5,9,14,6,3 

第一次遍历:5,9,6,3,14  5和9相比,不换;9和14相比,不换;14和6相比,换;14和3相比,换;第一次遍历找出第一大的数放后面。

第二次遍历:5,6,3,9,14  5和9相比,不换;9和6相比,换;9和3相比,换;第二次找出第二大的数。

第三次遍历:5,3,6,9,14  5和6相比,不换;6和3相比,换;第三大的数6。

第四次遍历:3,5,6,9,14 剩下两个比较得到整个排好序的数组

//    冒泡排序
    public void bubbleSort(int[] array){
        for(int i=0;i<array.length-1;i++){ #为了提高效率,可以替换成(int i=array.length-1;i>0;i--)
            for (int j = 0; j <array.length-1 ; j++) { 

if(array[j]>array[j+1]){

int temp=array[j];
array[j]
=array[j+1];
array[j
+1]=temp;
}
}
}
}



int [] array=new int[]{5,9,14,6,3};
user.bubbleSort(array);
for(int num:array){
System.out.print(num);

}

2.选择排序

示例:

5,9,14,6,3 

这种比较是最前边的一个开始和后边剩下的逐个比较,若后面的大,则不用换位置,小的就换到最前边

第一次遍历:3,9,14,6,5        先是第一个位置与其他位置比较    5<9,不换,5<14,不换,5<6,不换,5>3,换,最小的就出来了

第二次遍历:3,5,14,9,6        第二个位置上与其他位置比较    9<14,不换,  9>6,换, 6>5,换 , 5 第二小

第三次遍历:3,5,6,14,9        第三个位置与其他位置比较      14>9,换,  9>6,换,6 第三小

第四次遍历:3,5,6,9,14        剩下两个比较得出整个排序的数组

不过下面的每次都逐个遍历,速度有些慢

// 选择排序
    public void selectSort(int[] array){

        for (int i = 0; i <array.length-1 ; i++) {
            int min=i;
            for (int j = i+1; j <array.length-1 ; j++) {
                if(array[min]>array[j]){
                    min=j;
                }
            }
            if(min>i){
                int temp=array[i];
                array[i]=array[min];
                array[min]=temp;
            }
        }
    }
int [] array=new int[]{5,9,14,6,3};
user.selectSort(array); 

for(int num:array)
{
System.out.println(num);
}

猜你喜欢

转载自www.cnblogs.com/jiujianyaoge/p/10928389.html