美文网首页
快速排序记录

快速排序记录

作者: SetsunaChiya | 来源:发表于2017-01-04 00:27 被阅读0次

第一个能用的版本

void Sort::_QSort(int start, int end) {
    if(start>=end) return;
    int key = sorted[start];
    int keyIndex = start;
    int i = start, j = end;
    while(i<j) {
        for(;sorted[j]>=key && i<j;j--);
        if(sorted[j]<key) {
            swap(sorted[keyIndex], sorted[j]);
            keyIndex = j;
        }
        for(;sorted[i]<=key && i<j;i++);
        if(sorted[i]>key) {
            swap(sorted[keyIndex], sorted[i]);
            keyIndex = i;
        }
    }
    _QSort(start, keyIndex-1);
    _QSort(keyIndex+1, end);
}

void Sort::QuickSort() {
    _QSort(0, sorted.size()-1);
}
void Sort::_QSort(int start, int end) {
    if(start>=end) return;
    int key = sorted[start];
    int keyIndex = start;
    int i = start, j = end;
    while(i<j) {
        for(;sorted[j]>=key && i<j;j--);
        swap(sorted[keyIndex], sorted[j]);
        keyIndex = j;
        for(;sorted[i]<=key && i<j;i++);
        swap(sorted[keyIndex], sorted[i]);
        keyIndex = i;
    }
    _QSort(i, keyIndex-1);
    _QSort(keyIndex+1, j);
}

相关文章

  • 快速排序记录

    第一个能用的版本

  • Java排序之快速排序

    前言 快速排序作为排序算法的王者,我们没有理由不掌握它 快速排序的基本思想:通过一趟排序将待排序记录分割成独立的两...

  • Android 算法之排序算法(快速排序)

    快速排序 快速排序(Quick Sort)的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关...

  • 数据结构--快排与选择排序

    一、快速排序1、定义快速排序是对冒泡排序的一种改进。其基本思想是:通过一趟排序将待排序记录分割成独立的两部分,其中...

  • 快速排序算法

    快速排序算法 基本思想 快速排序是一类交换排序,它是对起泡排序的一种改进.它的基本思想是, 通过一趟排序将待排记录...

  • 几大排序算法

    快速排序 快速排序算法是基于分治策略的一种排序算法,它的基本思想是:通过一趟排序将待排序记录分割成独立的两部分,其...

  • iOS算法总结-快速排序

    快速排序 快速排序(Quick Sort) 的基本思想是:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分...

  • 数据结构与算法 09:快速排序

    快速排序 快速排序(Quick Sort) 的基本思想是:通过一趟排序将待排序的记录分割成独立的两部分,其中一部分...

  • 05.交换类排序(冒泡排序,快速排序)

    05.交换类排序(冒泡排序,快速排序) 1、 交换类排序 基本思想: 两两比较待排序记录的关键字,如果发生逆序(...

  • 七大排序算法之快速排序

    七大排序算法之快速排序 @(算法笔记)[排序算法, 快速排序, C++实现] [TOC] 快速排序的介绍: 快速排...

网友评论

      本文标题:快速排序记录

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