`
chiyx
  • 浏览: 274993 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

常用排序算法的实现(C语言版)-快速排序

阅读更多
快速排序:
/*
*将r位置中的位置移动到正确位置q上,并返回q,使得在a[p]..a[q-1] < a[q],
a[q+1]..a[r] > a[q]
*/
int partition(int a[], int p, int r);
void qSort(int a[], int p, int r);

void quickSort(int a[], int n) {
	qSort(a, 0, n - 1);
}

void qSort(int a[], int p, int r) {
	int  q;
	while (p < r) {
		q = partition(a, p, r);
		qSort(a, p, q - 1);
		p = q + 1;
	}
}

int partition(int a[], int p, int r) {
	int x, i, j;

	x = a[r];
	i = p - 1;
	for (j = p; j < r; j++) {
		if (a[j] <= x) {
			i++;
			swap(a, i, j);
		}
	}
	i++;
	swap(a, i, r);
	return i;
}
1
0
分享到:
评论

相关推荐

    几种常用排序算法的C语言实现

    一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序

    各种常用排序算法的C语言实现

    本资源提供了各种常用排序算法的C语言实现,源自严蔚敏的经典教材《数据结构》。下面将详细介绍这些排序算法及其在C语言中的实现原理。 1. 冒泡排序(Bubble Sort) 冒泡排序是最基础的排序方法,通过不断交换相邻...

    c语言常用算法-----列举C语言各种常用算法

    例如,CH16可能涵盖了更高级的排序算法,如堆排序和快速排序;CH2可能涉及基础的数据结构,如数组和指针;CH13可能是关于字符串处理和模式匹配的;CH20可能讲解了图论和图的遍历方法。通过深入学习每个章节,可以...

    算法C语言实现(第1~4部分)

    - **递归实现**:快速排序的核心在于递归地对左右两个子数组进行排序。 #### 3.3 归并排序 - **算法思想**:采用分治法(divide and conquer),将数组分成两个子数组,分别排序后再合并。 - **非递归实现**:可以...

    常用排序算法C语言实现.zip

    本压缩包“常用排序算法C语言实现.zip”包含了多种经典的排序算法用C语言编写的源代码,这对于我们理解和实践这些算法非常有帮助。下面将详细解释其中可能包含的一些常见排序算法。 1. 冒泡排序(Bubble Sort) ...

    C语言实现希尔排序算法

    希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的基本思想是将待排序的元素按照...在C语言中,希尔排序通常作为一个基础的排序算法实现,用于教学和理解排序算法的原理。

    常用排序算法C语言示例代码解说PDF

    个人原创总结的常用排序算法C语言示例代码解说PDF,可以动态输出排序过程,以便理解排序算法的主旨思想。包含有直接插入排序,折半插入排序,2路直接插入排序,起泡排序,简单选择排序,快速排序,堆排序,(希尔排序,归并...

    浅析基于C语言的常用排序算法比较.pdf

    插入排序算法同样是基于C语言的一种常用排序算法。插入排序的基本思想是:把待排序的序列分为已排序和未排序两部分,每次将一个未排序的元素,按照其大小插入到已排序序列中的适当位置,直到所有元素都被插入。插入...

    C++实现常用排序算法(快速,归并,选择,谢尔,堆排序)

    本文将深入探讨五种常用的排序算法:快速排序、归并排序、选择排序、谢尔排序和堆排序。 **快速排序** 是由C.A.R. Hoare在1960年提出的,是一种效率较高的分治策略。其基本思想是通过一趟排序将待排序的数据分割成...

    C语言常用算法及C语言程序实现

    - **排序算法**:快速排序、归并排序、冒泡排序、插入排序和希尔排序等。 - **搜索算法**:线性搜索、二分查找、深度优先搜索(DFS)和广度优先搜索(BFS)。 - **图论**:Dijkstra算法、Floyd-Warshall算法、...

    C语言版的排序方法---插入排序.docx

    - 虽然插入排序在处理大数据集时效率不如其他高级排序算法(如快速排序、归并排序等),但在小规模数据或部分有序的数据中,插入排序有很好的性能。 - 在实际编程中,插入排序也常用于其他算法的组成部分,比如...

    c语言链表的排序算法-排序链表最快的算法是什么?.pdf

    在我们的实验中,我们使用了C语言来实现链表排序算法,并使用clock()函数来测量排序所需的时间。我们比较了三个不同的链表排序算法:合并排序、快速排序和内置的qsort算法。结果表明,合并排序和快速排序在链表中的...

    合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序的C语言实现

    在编程领域,排序算法是数据结构与算法中的基础部分,对于C语言开发者来说,理解并实现这些算法至关重要。本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并...

    算法:C语言实现1-4部分

    书中可能会详细介绍几种经典的排序算法及其C语言实现,包括但不限于: - **冒泡排序**:通过重复遍历要排序的列表,比较每对相邻项并交换顺序错误的元素。 - **选择排序**:每次从未排序的部分选出最小(或最大)的...

    内部排序算法比较,C语言

    要求对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。待排序表的表长不小于1000;其中的数据要用伪随机数产生程序产生,至少要用5组不同的输入数据作比较...

    经典常用算法 Java和C语言两种实现

    本资源“经典常用算法 Java和C语言两种实现”聚焦于将这些算法用两种广泛使用的编程语言——Java和C语言进行实现,旨在帮助开发者理解和应用这些基础且重要的算法。 1. **排序算法**: - **冒泡排序**:简单的比较...

    C常用算法-----程序集

    1. **排序算法**:排序是编程中最常见的任务之一,包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。这些排序算法各有优缺点,适用于不同的数据规模和场景。例如,冒泡排序简单但效率较低,适合初学者理解...

    (完整word版)十大经典排序算法-C语言.pdf

    这两种排序算法在实际应用中并不常用,因为有更高效的算法如快速排序、归并排序和堆排序等。然而,学习这些基本排序算法有助于理解排序原理,为理解和优化更复杂的算法奠定基础。 在C语言中实现这些排序算法,通常...

    C语言应用-C语言算法集

    本文将详细阐释在C语言中实现常用算法的技巧,包括插值算法、排序算法、图形模式下的屏幕读写操作以及复数运算的实现方法。 首先,我们从插值算法谈起。插值是数学中一种用于估算未知数据点值的技术,尤其在数值...

    常用算法(C语言源代码)

    - 快速排序:CH05中可能讲解了快速排序的实现,这是一种分治策略,通过选取一个基准元素,将数组分为两部分,分别对两部分进行排序。 - 插入排序:在CH07中,可能会看到如何在已排序的序列中插入新元素,逐步构建...

Global site tag (gtag.js) - Google Analytics