[javaSE] 數組(排序-冒泡排序),javase冒泡

來源:互聯網
上載者:User

[javaSE] 數組(排序-冒泡排序),javase冒泡

兩層嵌套迴圈,外層控制迴圈次數,內層迴圈進行比較

for(int x=0;x<arr.length-1;x++){            for(int y=0;y<arr.length;y++){                if(arr[y]>arr[y+1]){                                    }            }        }

 

此時的代碼有問題,內層迴圈多比較了已經排好序的部分,都在最後面,需要去掉

        for(int x=0;x<arr.length-1;x++){            for(int y=0;y<arr.length-x;y++){                if(arr[y]>arr[y+1]){                                    }            }        }

 

此時的代碼有問題,內層迴圈最後一個元素,無法和它後面的比較,應該去掉

        for(int x=0;x<arr.length-1;x++){            for(int y=0;y<arr.length-x-1;y++){                if(arr[y]>arr[y+1]){                                    }            }        }

 

 

判斷完後,兩個變數交換位置,利用第三方變數

        for(int x=0;x<arr.length-1;x++){            for(int y=0;y<arr.length-x-1;y++){                if(arr[y]>arr[y+1]){                    int temp=arr[y];                    arr[y]=arr[y+1];                    arr[y+1]=temp;                }            }        }

 

java版:

public class ArrayDemo {    /**     * @param args     */    public static void main(String[] args) {        int[] arr=new int[]{2,5,4,1};        int[] newArr=bubbleSort(arr);        for(int x:newArr){            System.out.print(x);        }    }    /**     * 冒泡排序(正序)     * @param arr     * @return     */    public static int[] bubbleSort(int[] arr){        for(int x=0;x<arr.length-1;x++){            for(int y=0;y<arr.length-x-1;y++){                if(arr[y]>arr[y+1]){                    int temp=arr[y];                    arr[y]=arr[y+1];                    arr[y+1]=temp;                }            }        }        return arr;    }}

PHP版:

<?phpclass ArrayDemo{    public static function main(){        $arr=array(2,5,4,1);        print_r(ArrayDemo::bubbleSort($arr));//輸出 Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 )    }        /**     * 冒泡排序(正序)     * @param arr     * @return     */    public static function bubbleSort($arr){        for($x=0;$x<count($arr)-1;$x++){            for($y=0;$y<count($arr)-$x-1;$y++){                if($arr[$y]>$arr[$y+1]){                    $temp=$arr[$y];                    $arr[$y]=$arr[$y+1];                    $arr[$y+1]=$temp;                }            }        }        return $arr;    }}ArrayDemo::main();

 

 

選擇排序和冒泡排序效能都很低,提高效能的方法,當需要換位置的時候,先不換,先把需要換位置的角標放到棧記憶體中,等最後一次性在堆記憶體中交換

排序中最快的是 希爾排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.