算法导论C语言实现: 快速排序

原创 2013年12月03日 11:59:12
#include <common.h>

//PARTITION
int PARTITION(int *A, int p, int r)
{
	int x = A[r];
	int i = p - 1;
	int j = p;
	int tmp = 0;
	
	for (j = p; j < r; ++j) {
		if (A[j] <= x) {
			++i;
			tmp = A[i];
			A[i] = A[j];
			A[j] = tmp;
		}
	}

	tmp = A[i+1];
	A[i+1] = A[r];
	A[r] = tmp;

	return i+1;
}

//QUICKSORT
void QUICKSORT(int *A, int p, int r)
{
	int q;

	if (p < r) {
		q = PARTITION(A, p, r);
		QUICKSORT(A, p, q-1);
		QUICKSORT(A, q + 1, r);
	}
}

void main()
{
	int A[] = {8, 7, 10, 100, 88, 99, 0, 66};
	int i = 0;

	QUICKSORT(A, 0, sizeof(A)/sizeof(int) - 1);

	for (i = 0; i < sizeof(A)/sizeof(int); ++i) {
		TRACE("%d\t", A[i]);
	}
	TRACE("\n");

	system("pause");
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

算法导论 - 快速排序的 C 语言实现

在实践中,需要对大量数据排序时,快速排序常常是最佳的选择。快速排序是基于分治思想的一种算法,和归并排序有相似之处。在最坏情况下,快速排序的时间复杂度是O( n^2 );平均情况下,快速排序的时间复杂度...
  • guankle
  • guankle
  • 2015年03月24日 15:54
  • 519

算法导论的Java实现----7. 快速排序

/* * 快速排序 */ import java.util.Comparator; public class QuickSort { public static int partition(...

【算法导论】快速排序实现

#ifndef QUICK_SORT_H #define QUICK_SORT_H #define QK_SORT #include #include #include "INSERTION-...

算法导论 - QuickSort 快速排序 C++实现

算法导论的快速排序还和一般书上的快速排序是有点不一样的。 当然书习题也给出了一般快速排序的方法,其分区函数学名叫Hoare partition。 书本介绍的排序可以用图看的很清晰: 然后配合C++...
  • kenden23
  • kenden23
  • 2013年11月09日 10:32
  • 13205

《算法导论》8、快速排序实现(C++)

首先上一个正常版的,这种版本的程序对于升序或者降序的数组,会达到最差情况。 #include #include using namespace std; int partition(int* A...

算法导论第七章-快速排序-Cpp代码实现

实现了算法导论第七章中的快速排序

算法导论(Introduction to Algorithms)之堆排序(C语言实现)

源码下载地址: http://download.csdn.net/detail/mr_dodo/4962237 堆排序其重要思想,是保证数组最大堆或最小堆的性质(除根节点以外的每个结点i,均有...
  • Mr_dodo
  • Mr_dodo
  • 2013年01月05日 17:13
  • 1466

算法导论 堆排序 C语言实现

算法导论 第六章 堆排序

【算法导论】归并排序,C语言实现

void merge(int* A , int p , int q , int r) { static int counter =0; printf("%d st int here\n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法导论C语言实现: 快速排序
举报原因:
原因补充:

(最多只允许输入30个字)