`
SunnyYoona
  • 浏览: 366895 次
社区版块
存档分类
最新评论

[算法系列之五]快速排序

 
阅读更多

【分析】


【伪代码】



【思路图】


【运行过程】



【代码】

/*********************************
*   日期:2014-04-01
*   作者:SJF0115
*   题目:快速排序
**********************************/
#include <iostream>
#include <stdio.h>
using namespace std;
//对子数组array[p...r]就地重排
int Partition(int array[],int p,int r){
    int j,temp;
    //定义哨兵
    int x = array[r];
    //i为小于哨兵元素的最后一个元素下标
    int i = p - 1;
    //j为待排序元素的第一个元素
    for(j = p;j < r;j++){
        //跟哨兵比较
        if(array[j] < x){
            i++;
            //交换array[i] array[j]
            temp = array[j];
            array[j] = array[i];
            array[i] = temp;
        }
    }
    //交换array[i+1](大于哨兵元素的第一个元素) array[r]
    temp = array[i+1];
    array[i+1] = array[r];
    array[r] = temp;
    //返回分割下标
    return i + 1;
}
//快排
void QuickSort(int array[],int p,int r){
    if(p >= r || array == NULL){
        return;
    }
    int index = Partition(array,p,r);
    QuickSort(array,p,index-1);
    QuickSort(array,index+1,r);
}

int main()
{
    int array[] = {2,8,7,1,3,5,6,4};
    QuickSort(array,0,7);
    for(int i = 0;i <= 7;i++){
        printf("%d\n",array[i]);
    }
}


分享到:
评论

相关推荐

    白话经典算法系列之六 快速排序 快速搞定 - MoreWindows - 博客园1

    1.先从数列中取出一个数作为基准数 2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边 3.再对左右区间重复第二步,直到各区间只有一个

    归并排序算法实现(排序算法系列1)

    本人自己写的一些排序算法,这是系列1归并排序算法实现,

    快速排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    算法可视化系列——排序算法——快速排序

    NULL 博文链接:https://wojiaolongyinong.iteye.com/blog/1868188

    C++ 不知算法系列之从希尔、归并排序算法中的分治哲学聊起

    希尔、归并、快速排序算法也可归为同一类,它们的共同点都是建立在分治思想之上。把大问题分拆成小问题,解决所有小问题后,再合并每一个小问题的结果,最终得到对原始问题的解答。 Tips: 通俗而言:化整为零,...

    JavaScript算法系列之快速排序(Quicksort)算法实例详解

    主要介绍了JavaScript算法系列之快速排序(Quicksort)算法实例详解的相关资料,需要的朋友可以参考下

    C#递归算法之快速排序

    归并排序,在排序算法中还有一种算法用到了递归,那就是快速排序,快速排序也是一种利用了分而治之策略的算法,它由C.A.R发明,它依据中心元素的值,利用一系列递归调用将数据表划分成越来越小的子表。在每一步调用...

    快速排序 可实现1000的数的排序

    可实现两个计算机间通信 并实现快速排序算法 2分钟内可排1000万个数 数是随机产生的

    C++不知算法系列之排序从玩转冒泡算法开始

    所谓排序,就是把数据群体按个体数据的特征按从大到小或从小到大的顺序存放。 排序在应用开发中很常见,如对商品按价格、人气、购买数量等排序,便于使用者快速找到数据。

    希尔排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    选择排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    计数排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    拓扑排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    堆排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    快速排序的四种方法实现以及优化(保姆级讲解)

    虽然本文提供了一系列实用的快速排序教程,但真正的掌握还需要结合实际操作和项目经验。建议读者在准备面试的同时,通过实际项目或模拟环境来应用这些快速排序概念,以便更深刻地理解和掌握它们。此外,随着技术的...

    十五个经典算法研究与总结、目录+索引(定稿版)

    九、图像特征提取与匹配之SIFT算法 (SIFT算法系列五篇文章) 九(续)、sift算法的编译与实现 九(再续)、教你一步一步用c语言实现sift算法、上 九(再续)、教你一步一步用c语言实现sift算法、下 九(三续):...

    python数据结构与算法详解与源码

    5-10 快速排序实现1 (1) 5-10 快速排序实现1 5-11 快速排序实现2 5-12 归并排序 5-13 归并排序 代码执行流程 5-14 归并排序时间复杂度及排序算法复杂度对比 5-15 二分查找 5-16 二分查找时间复杂度 六、树和...

    快速排序2.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    数据结构、机器学习、常用算法、经典案例、排序、加密算法.zip

    算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法...

Global site tag (gtag.js) - Google Analytics