最易理解的qsort排序算法

快速排序算法程序可以写得千奇百怪,但最易理解的个人认为仍是下面的:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>

void swap(int *a ,int *b)
{
    int t = *a;
    *a = *b;
    *b = t;
}

int partition(int array[],int l,int r)
{
    int pivot = array[r];
    int curpos = l;
    int j ;

    for( j = l;j<r;j++)
    {
        if(array[j] < pivot)
        {
            swap(&array[j],&array[curpos]);
            curpos++;
        }
    }

    swap(&array[r],&array[curpos]);
    return curpos;

}

void quicksort(int array[],int l,int r)
{
    int interval;
    if(l < r)
    {
        interval = partition(array,l,r);
        quicksort(array,l,interval-1);
        quicksort(array,interval+1,r);

    }

}

int test_quicksort()
{
    int number = 10000000;
    printf("hehe:%d\n",number);
    int *array = (int*) malloc(number*sizeof(int));
    if (array == NULL)
    {
        printf("malloc failed\n");
        return -1;
    }
    int i;

    printf("----------------------------------------before quick sort--------------\n");
    srand(time(NULL));
    for(i = 0;i<number;i++)
    {
        array[i] = rand()%100000000;
        //printf("\tarray[%d] = %d\n",i,array[i]);
    }

    printf("----------------------------------------after quick sort-----------------\n");

    quicksort(array,0,number-1);
    for(i = 0;i<number;i++)
    {
        //printf("\tarray[%d] = %d\n",i,array[i]);
    }
    printf("ok\n");
    return 0;
}
int main()
{
    test_quicksort();
}

没有注释,也懂吗?

最易理解的qsort排序算法

时间: 2024-10-07 18:27:26

最易理解的qsort排序算法的相关文章

qsort排序算法

七种qsort排序方法<本文中排序都是采用的从小到大排序>一.对int类型数组排序int num[100];Sample:int cmp ( const void *a , const void *b ){return *(int *)a - *(int *)b;}qsort(num,100,sizeof(num[0]),cmp);二.对char类型数组排序(同int类型)char word[100];Sample:int cmp( const void *a , const void *b 

Raft 为什么是更易理解的分布式一致性算法

Raft 为什么是更易理解的分布式一致性算法 一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都.由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息.在战争的时候,拜占庭军队内所有将军必需达成 一致的共识,决定是否有赢的机会才去攻打敌人的阵营.但是,在军队内

【转】Raft 为什么是更易理解的分布式一致性算法

编者按:这是看过的Raft算法博客中比较通俗的一篇了,讲解问题的角度比较新奇,图文并茂,值得一看.原文链接:Raft 为什么是更易理解的分布式一致性算法 一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都.由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息.

Raft 为什么是更易理解的分布式一致性算法——(1)Leader在时,由Leader向Follower同步日志 (2)Leader挂掉了,选一个新Leader,Leader选举算法。

转自:http://www.cnblogs.com/mindwind/p/5231986.html Raft 协议的易理解性描述 虽然 Raft 的论文比 Paxos 简单版论文还容易读了,但论文依然发散的比较多,相对冗长.读完后掩卷沉思觉得还是整理一下才会更牢靠,变成真正属于自己的.这里我就借助前面黑白棋落子里第一种极简思维来描述和概念验证下 Raft 协议的工作方式. 在一个由 Raft 协议组织的集群中有三类角色: Leader(领袖) Follower(群众) Candidate(候选人

【转载】Raft 为什么是更易理解的分布式一致性算法

一致性问题可以算是分布式领域的一个圣殿级问题了,关于它的研究可以回溯到几十年前. 拜占庭将军问题 Leslie Lamport 在三十多年前发表的论文<拜占庭将军问题>(参考[1]). 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都.由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息.在战争的时候,拜占庭军队内所有将军必需达成 一致的共识,决定是否有赢的机会才去攻打敌人的阵营.但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又

【Unity3D自学记录】可视化对照十多种排序算法(C#版)

在这篇文章中.我会向大家展示一些排序算法的可视化过程.我还写了一个工具.大家可对照查看某两种排序算法. 下载源代码 – 75.7 KB 下载演示样例 – 27.1 KB 引言 首先,我觉得是最重要的是要理解什么是"排序算法".依据维基百科.排序算法(Sorting algorithm)是一种能将一串数据按照特定排序方式进行排列的一种算法. 最经常使用到的排序方式是数值顺序以及字典顺序.有效的排序算法在一些算法(比如搜索算法与合并算法)中是重要的,如此这些算法才干得到正确解答.排序算法也

多种排序算法的思路和简单代码的实现(一)

就自己简单的理解了一些排序算法(JAVA)思路和代码分享给大家:欢迎大家进行交流. 直接插入排序,折半插入排序,冒泡排序,快速排序 1 public class Sort { 2 /* 3 * 直接插入排序: 先确定一个有序数组,然后把插入的数与有序数组从最后依次进行比较, 直到插入的数比有序数组的数大,此数换为插入的数字,从此位置以后 4 * 的数依次向后移动一位. 5 */ 6 public static void insert(int[] a) { 7 for (int i = 1; i

可视化对比排序算法

本文由 伯乐在线 - smilesisi 翻译自 Kanasz Robert.未经许可,禁止转载!欢迎加入:技术翻译小组,或分享原创到伯乐头条. 在这篇文章中,我会向大家展示一些排序算法的可视化过程.我还写了一个工具,大家可对比查看某两种排序算法. 下载源码 – 75.7 KB 下载示例 – 27.1 KB 引言 首先,我认为是最重要的是要理解什么是“排序算法”.根据维基百科,排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法.最常用到的排序方式是

可视化对比十多种排序算法(C#版)

本文由 伯乐在线 - smilesisi 翻译自 Kanasz Robert.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 在这篇文章中,我会向大家展示一些排序算法的可视化过程.我还写了一个工具,大家可对比查看某两种排序算法. 下载源码 – 75.7 KB 下载示例 – 27.1 KB 引言 首先,我认为是最重要的是要理解什么是“排序算法”.根据维基百科,排序算法(Sorting algorithm)是一种能将一串数据依照特定排序方式进行排列的一种算法.最常用到的排序方式是数值顺序以及字典