排序(二分插入排序)
生活随笔
收集整理的這篇文章主要介紹了
排序(二分插入排序)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
二分插入排序?qū)儆诓迦肱判虻囊环N,是一種穩(wěn)定的排序.(相等的元素順序沒有改變)
- 最壞情況:每次都在有序序列的起始位置插入,則整個(gè)有序序列的元素需要后移,時(shí)間復(fù)雜度為O(n2)
- 最好情況:待排序數(shù)組本身就是正序的,每個(gè)元素所在位置即為它的插入位置,此時(shí)時(shí)間復(fù)雜度僅為比較時(shí)的時(shí)間復(fù)雜度,為O(log2n)
- 平均情況:O(n2)
空間復(fù)雜度上,二分插入也是就地排序,空間復(fù)雜度為(O(1))。
int a[]={2,45,34,324,2,3,7,555,46,34}; public void testTwoBinary(){for(int i=0;i<a.length;i++){int temp=a[i];int left=0;int right=i-1;int mid;//找到插入位置while(left<=right){mid=(left+right)/2;if(temp<a[mid]){//低位right=mid-1;}else{//高位left=mid+1;}}//大于插入元素元素后移for(int j=i-1;j>=left;j--){a[j+1] = a[j];}//插入元素 left or high + 1a[left] = temp; }總結(jié)
以上是生活随笔為你收集整理的排序(二分插入排序)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机房维修
- 下一篇: 写一个简单的 django_post