quicksort快速排序算法

news/2024/5/19 23:58:26 标签: 快速排序

核心思想:

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

代码写得很详细,仔细阅读就可以,重点是要清楚两个递归函数。

void sort(int *a, int left, int right)

{

    if(left >= right)/*如果左边索引大于或者等于右边的索引就代表已经整理完成一个组了*/

    {

       return ;

    }

    int i = left;

    int j = right;

    int key = a[left];

    while(i < j)  /*左边小于右边,控制在当组内寻找一遍*/

    {

        while(i < j && key <= a[j])//key找到了大于a[j])的数字

        {

            j--;/*向前寻找*/

        

        a[i] = a[j];

   /*找到一个这样的数后就把它赋给前面的被拿走的i的值(如果第一次循环且key是a[left],那么就是给key)*/  

        while(i < j && key >= a[i])

        {

            i++;

        }

         

        a[j] = a[i];

    }

    a[i] = key;/*当在当组内找完一遍以后就把中间数key回归*/

    sort(a, left, i - 1);/*最后用同样的方式对分出来的左边的小组进行同上的做法*/

    sort(a, i + 1, right);/*用同样的方式对分出来的右边的小组进行同上的做法*/

                       /*当然最后可能会出现很多分左右,直到每一组的i = j 为止*/

}


http://www.niftyadmin.cn/n/1614802.html

相关文章

无需充电的号角式iPhone扬声器Megaphone

Megaphone是意大利厂商en&is专为iPhone量身打造的一款扬声器。 MegaPhone外观看上去像一个大号角&#xff0c;底部支架采用天然木材&#xff0c;扬声器主体则由纯手工打造的陶瓷制成&#xff0c;顶部的固定座可支持老版iPhone、iPhone 3G、iPhone 3GS、iPhone 4、iPhone 4S…

Memset 初始化问题

首先要知道memset函数是对字节为单位进行赋值的&#xff1b; void *memset(void *s, int ch, size_t n); 函数解释&#xff1a;将s中前n个字节 &#xff08;typedef unsigned int size_t &#xff09;用 ch 替换并返回 s 。 其实这里面的ch就是ascii为ch的字符&#xff1b; …

Sony告诉我们普通人也能变身蜘蛛侠

1997年&#xff0c;当《泰坦尼克号》播出后&#xff0c;除了感动和震撼&#xff0c;大家应该还惊叹于用Linux处理的电影是多么的真实。 现在看来&#xff0c;这没什么大不了的&#xff0c;Sony联手英国的Studio Output及Marshmallow Laser Feast&#xff0c;利用Playstation Mo…

1G - Maximum Subrectangle

You are given two arrays aa and bb of positive integers, with length nn and mmrespectively. Let cc be an nmnm matrix, where ci,jai⋅bjci,jai⋅bj. You need to find a subrectangle of the matrix cc such that the sum of its elements is at most xx, and its ar…

移动互联网2011年终盘点:全球手机用户总量为59亿

瑞典IT服务公司Pingdom今天撰文&#xff0c;全面汇总了2011年移动互联网各个领域的数据&#xff0c;包括智能手机、平板电脑、移动数据流量等多个相关领域。 以下为文章全文&#xff1a; 移动互联网已经蔚然成风&#xff0c;这一点几乎毋庸置疑。从诺基亚9000 Communicator手机…

HTML5游戏:真的是机会?

HTML5无疑是今年移动互联网大大小小会议的热点话题。不客气地讲&#xff0c;它看上去也的确更像是个“话题”。本文无意介入“Web App将扼杀原生应用”这类争执&#xff08;笔者认为二者将是并存的&#xff09;&#xff0c;而是打算从游戏的角度看一下HTML5存在的实际问题。虽然…

我们为什么会设计0x3f3f3f3f

转载出处http://blog.csdn.net/jiange_zh https://blog.csdn.net/jiange_zh/article/details/50198097 在算法竞赛中&#xff0c;我们常常需要用到一个“无穷大”的值&#xff0c;对于我来说&#xff0c;大多数时间我会根据具体问题取一个99999999之类的数…

电子杂志移动应用Google Currents之初体验

编者注&#xff1a;本文编译自国外知名科技博客TC上的“Google Currents: First Impressions Of Google’s Flipboard Competitor”&#xff0c;内容略有删改。 今日凌晨最新消息&#xff0c;Google刚刚推出了一款用户期待已久的的电子杂志移动应用Google Currents&#xff0c;…