二分排序法

来源:互联网 发布:天文搜星算法 编辑:程序博客网 时间:2024/06/03 23:43
二分插入排序实际上是对插入排序的优化。
(1)算法思想
根据插入排序的思想,在插入待排序列的第i个元素时,由于前面的序列已经有序,因此可以使用二分法寻找第i个元素的正确位置。
(2)伪代码:
BinInsertSort(int a[], int n) 

        int key, left, right, middle; 
        for (int i=1; i<n; i++) 
        { 
                key = a[i]; 
                left = 0; 
                right = i-1; 
                while (left<=right) 
                { 
                        middle = (left+right)/2; 
                        if (a[middle]>key) 
                                right = middle-1; 
                        else 
                                left = middle+1; 
                } 
                 
                for(int j=i-1; j>=left; j--) 
                { 
                        a[j+1] = a[j]; 
                } 
                 
                a[left] = key;        
        } 
}
 
(3)分析
1)稳定
2)空间代价:Θ(1)
3)时间代价:
0 0
原创粉丝点击