算法导论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 );平均情况下,快速排序的时间复杂度...

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

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

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

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

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

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

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

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

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

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

算法导论:堆排序递归实现 (c语言)

我们算法老师让我下节课讲一下堆排序的算法,我就受累写了如下的代码,初学c语言的可以参照着看一下,如果你现在初学c语言,那么恭喜你你学习了一门可以收益终身的语言,c语言学好走遍天下都不怕,这是真的所有的...

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

1. 源代码 #include typedef struct _heap_t { int length; //array length int size; //heap size int *...

算法导论笔记(三) : 快速排序

1 快速排序简介 2 快速排序过程 3 代码实现 4 性能分析
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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