码迷,mamicode.com
首页 > 编程语言 > 详细

编程算法 - 高速排序算法 代码(C)

时间:2017-04-30 19:57:35      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:style   alt   print   for   blog   turn   std   nbsp   int end   

高速排序算法 代码(C)


本文地址: http://blog.csdn.net/caroline_wendy


经典的高速排序算法, 作为一个编程者, 不论什么时候都要完整的手写.


代码:

/*
 * main.cpp
 *
 *  Created on: 2014.6.12
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

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

int RandomInRange(int min, int max)
{
    int random = rand() % (max - min + 1) + min;
    return random;
}

void Swap(int* num1, int* num2)
{
    int temp = *num1;
    *num1 = *num2;
    *num2 = temp;
}

int Partition(int data[], int length, int start, int end)
{
    if(data == NULL || length <= 0 || start < 0 || end >= length) {
    	return -1;
    }

    int index = RandomInRange(start, end);
    Swap(&data[index], &data[end]);

    int small = start - 1;
    for(index = start; index < end; ++ index)
    {
        if(data[index] < data[end])
        {
            ++ small;
            if(small != index)
                Swap(&data[index], &data[small]);
        }
    }

    ++ small;
    Swap(&data[small], &data[end]);

    return small;
}

void QuickSort (int data[], int length, int start, int end) {
	if (start == end) return;

	int index = Partition(data, length, start, end);
	if (index > start)
		QuickSort(data, length, start, index-1);
	if (index < end)
		QuickSort(data, length, index+1, end);
}

int main(void)
{
    int str[] =  {49, 38, 65, 97, 76, 13, 27, 49};
    QuickSort(str, 8, 0, 7);
    for (int i : str) {
    	printf("%d ", i);
    }
    printf("\n");

    return 0;
}

输出:

13 27 38 49 49 65 76 97 




技术分享



编程算法 - 高速排序算法 代码(C)

标签:style   alt   print   for   blog   turn   std   nbsp   int end   

原文地址:http://www.cnblogs.com/llguanli/p/6790174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!