美文网首页
快排基本步骤

快排基本步骤

作者: MC_Honva | 来源:发表于2017-02-22 11:08 被阅读271次

基本思想

时间复杂度: $logN^N$ 或者 $N*logN$

采用分治的方法

  • 从数组中找出一个数作为基数
  • 将大于这个基数的数放在右边,小于基数的数放在左边
  • 重复上述步骤,直到各区间只有一个数

采用挖坑填数的思想

  • i=L,j=R;讲基数挖出形成第一个坑a[i]
  • j--后向前找比他小的数,找到后将此数填到a[i]中
  • i++从前往后找比基数大的,找到后将此数填到a[j]中
  • 重复上述步骤,直到i==j

核心代码

挖坑法

     public int  AdJust(int arr[],int l,int r){
        int i = l,j=r;
        int standard = arr[l];
        while (i<j) {
            while (i < j && arr[j] > standard)
                j--;
            if (i < j) {
                arr[i] = arr[j];
                i++;
            }
            while (i < j && arr[i] < standard)
                i++;
            if (i < j) {
                arr[j] = arr[i];
                j--;
            }
        }
        arr[i] = standard;
        return i;
    };

再采用分治法

    void quickSort(int arr[],int l,int r){
        if (l<r){
            int x = AdJust(arr,l,r);
            quickSort(arr,l,x-1);//中间的不用再排序
            quickSort(arr,x+1,r);
        }
    }

整合上面2个代码

void QuickSort(int arr[], int l, int r) {
    if (l < r) {
        int i = l, j = r;
        int standard = arr[l];
        while (arr[j] >= standard && i < j) {
            j--;
        }
        if (i < j) {
            arr[i++] = arr[j];
        }
        while (arr[i] < standard && i < j) {
            i++;
        }
        if (i < j) {
            arr[j--] = arr[i];
        }
        arr[i] = standard;
        QuickSort(arr, l, i - 1);
        QuickSort(arr, i + 1, r);
    }
}

快排-挖坑排序参考地址---MoreWindows

相关文章

  • 快排基本步骤

    基本思想 时间复杂度: $logN^N$ 或者 $N*logN$ 采用分治的方法 从数组中找出一个数作为基...

  • 各种排序算法代码

    冒泡 插入 选择(基本没用) 归并 快排

  • JS实现快速排序

    看了一篇通俗易懂的快排文章 快排,下面一步一步 实现整个过程。 快排的基本思想 上面链接的文章对快排的思路提出了一...

  • meta分析的基本步骤是什么-附实例讲解,meta分析七步快速见

    本文来剖析一下,meta分析的基本步骤之:七步走。meta分析的基本步骤是这样的:选题→制定检索策略→确定纳入和排...

  • 10. 查找

    查找的题目基本是二分查找,排序一般是快排或归并 快排套路是left = 0, right = x.size() -...

  • 常用排序算法

    常见排序算法 本文介绍6种常用排序算法,包括冒泡、选择、插入、快排、堆排、希尔排序。下面从排序算法的原理、解题步骤...

  • 快排

    快排代码

  • 快排

  • 快排

    昨天晚上睡觉前兴起准备十分钟写出快排,结果纠结了两个小时愣是没有搞出来,很郁闷地睡觉去。今天地铁上跟LG又重新缕了...

  • 快排

    基本思想: 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的...

网友评论

      本文标题:快排基本步骤

      本文链接:https://www.haomeiwen.com/subject/hjnpwttx.html