Java排序演算法之插入排序

來源:互聯網
上載者:User

標籤:stat   arrays   時間   div   pac   ati   實現   大小   package   

基本過程:

每次將待排元素和已經排序好的序列進行比較,按照大小順序插入進去,重新構造一個新的有序序列。

插入排序演算法有種遞迴的思想在裡面,它由N-1趟排序組成。初始時,只考慮數組下標0處的元素,只有一個元素,顯然是有序的。

然後第一趟 對下標 1 處的元素進行排序,保證數組[0,1]上的元素有序;

第二趟 對下標 2 處的元素進行排序,保證數組[0,2]上的元素有序;

.....

.....

第N-1趟對下標 N-1 處的元素進行排序,保證數組[0,N-1]上的元素有序,也就是整個數組有序了。

它的遞迴思想就體現在:當對位置 i 處的元素進行排序時,[0,i-1]上的元素一定是已經有序的了

Java代碼實現:

package paixu;import java.util.Arrays;public class Charu {    public static void insertSort(int[] numbers){        int size = numbers.length;            for(int i = 0 ; i < size ; i++){            int temp = numbers[i];            //假如temp比前面的值小,則將前面的值後移            for(int j = i ; j > 0 && temp < numbers[j-1] ; j --){                numbers[j] = numbers[j-1];            }            numbers[j] = temp;        }    }        public static void main(String[] args) {        int a[] = {46,79,56,38,40,84};        insertSort(a);        System.out.println(Arrays.toString(a));    }}

演算法效能分析:

時間複雜度:當待排數組有序時,沒有移動操作,此時複雜度為O(N),當待排數組是逆序時,比較次數達到最大--對於下標 i 處的元素,需要比較 i-1 次。總的比較次數:1+2+...+N-1 ,故時間複雜度為O(N^2)

空間複雜度:O(1)。

穩定性:插入排序是在一個已經有序的小序列的基礎上,一次插入一個元素。比較也是從有序序列的末尾開始,如果碰見一個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,

所以插入排序是穩定的。

Java排序演算法之插入排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.