首页 > 编程语言 > 详细

排序 - 快速排序(C语言)

时间:2021-05-10 09:15:25      阅读:17      评论:0      收藏:0      [点我收藏+]

快速排序的平均时间性能很好,与插入排序不同,快速排序根据整个文件,把控制当前排序进程的基准关键字放到正确的位置上。

时间复杂度:平均情况下,O(NlogN);最坏情况:O(N2)

空间复杂度:O(NlogN)

稳定性:不稳定

// 快速排序
// left = 0; 
// right = listSize - 1;
void quicksort(int list[], int left, int right) {
    int pivot;
    int i, j;
    int temp = 0;
    if (left < right) {
        i = left;
        j = right + 1;
        pivot = list[left];

        //完成一次排序,即将数组中小于pivot的关键字放在左边,大于pivot的关键字放在右边
        do {
            do
                i++;
            while (list[i] < pivot);
            do
                j--;
            while (list[j] > pivot);
            if (i < j) {
                temp = list[i];
                list[i] = list[j];
                list[j] = temp;
                //SWAP(list[i], list[j]); //list[i]和list[j]互换
            }
        } while (i < j);

        temp = list[left];
        list[left] = list[j];
        list[j] = temp;
        //SWAP(list[left], list[j]);
        quicksort(list, left, j - 1);
        quicksort(list, j + 1, right);
    }
}

 

排序 - 快速排序(C语言)

原文:https://www.cnblogs.com/vicky2021/p/14749227.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!