快速排序:
/*
*将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;
}
分享到:
相关推荐
一些常用排序算法的C语言实现,包括直接选择排序,希尔排序,直接插入排序,快速排序,归并排序,冒泡排序,堆排序
本资源提供了各种常用排序算法的C语言实现,源自严蔚敏的经典教材《数据结构》。下面将详细介绍这些排序算法及其在C语言中的实现原理。 1. 冒泡排序(Bubble Sort) 冒泡排序是最基础的排序方法,通过不断交换相邻...
例如,CH16可能涵盖了更高级的排序算法,如堆排序和快速排序;CH2可能涉及基础的数据结构,如数组和指针;CH13可能是关于字符串处理和模式匹配的;CH20可能讲解了图论和图的遍历方法。通过深入学习每个章节,可以...
- **递归实现**:快速排序的核心在于递归地对左右两个子数组进行排序。 #### 3.3 归并排序 - **算法思想**:采用分治法(divide and conquer),将数组分成两个子数组,分别排序后再合并。 - **非递归实现**:可以...
本资源"常用排序算法C语言实现"提供了一个实践平台,帮助学习者将理论知识转化为实际代码。 首先,让我们探讨几种常见的排序算法及其C语言实现: 1. **冒泡排序(Bubble Sort)**:冒泡排序是最基础的排序方法,...
本压缩包“常用排序算法C语言实现.zip”包含了多种经典的排序算法用C语言编写的源代码,这对于我们理解和实践这些算法非常有帮助。下面将详细解释其中可能包含的一些常见排序算法。 1. 冒泡排序(Bubble Sort) ...
希尔排序(Shell Sort)是一种基于插入排序的快速排序方法,由Donald Shell于1959年提出。它的基本思想是将待排序的元素按照...在C语言中,希尔排序通常作为一个基础的排序算法实现,用于教学和理解排序算法的原理。
个人原创总结的常用排序算法C语言示例代码解说PDF,可以动态输出排序过程,以便理解排序算法的主旨思想。包含有直接插入排序,折半插入排序,2路直接插入排序,起泡排序,简单选择排序,快速排序,堆排序,(希尔排序,归并...
插入排序算法同样是基于C语言的一种常用排序算法。插入排序的基本思想是:把待排序的序列分为已排序和未排序两部分,每次将一个未排序的元素,按照其大小插入到已排序序列中的适当位置,直到所有元素都被插入。插入...
本文将深入探讨五种常用的排序算法:快速排序、归并排序、选择排序、谢尔排序和堆排序。 **快速排序** 是由C.A.R. Hoare在1960年提出的,是一种效率较高的分治策略。其基本思想是通过一趟排序将待排序的数据分割成...
- **排序算法**:快速排序、归并排序、冒泡排序、插入排序和希尔排序等。 - **搜索算法**:线性搜索、二分查找、深度优先搜索(DFS)和广度优先搜索(BFS)。 - **图论**:Dijkstra算法、Floyd-Warshall算法、...
- 虽然插入排序在处理大数据集时效率不如其他高级排序算法(如快速排序、归并排序等),但在小规模数据或部分有序的数据中,插入排序有很好的性能。 - 在实际编程中,插入排序也常用于其他算法的组成部分,比如...
在我们的实验中,我们使用了C语言来实现链表排序算法,并使用clock()函数来测量排序所需的时间。我们比较了三个不同的链表排序算法:合并排序、快速排序和内置的qsort算法。结果表明,合并排序和快速排序在链表中的...
C语言中常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序等。每种排序算法都有其特点和适用场景,例如冒泡排序和选择排序简单但效率较低,快速排序和归并排序则在平均情况下有较高的性能...
在编程领域,排序算法是数据结构与算法中的基础部分,对于C语言开发者来说,理解并实现这些算法至关重要。本文将详细讲解六种经典的排序算法——合并排序、插入排序、希尔排序、快速排序、冒泡排序以及桶排序,并...
书中可能会详细介绍几种经典的排序算法及其C语言实现,包括但不限于: - **冒泡排序**:通过重复遍历要排序的列表,比较每对相邻项并交换顺序错误的元素。 - **选择排序**:每次从未排序的部分选出最小(或最大)的...
要求对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。待排序表的表长不小于1000;其中的数据要用伪随机数产生程序产生,至少要用5组不同的输入数据作比较...
本资源“经典常用算法 Java和C语言两种实现”聚焦于将这些算法用两种广泛使用的编程语言——Java和C语言进行实现,旨在帮助开发者理解和应用这些基础且重要的算法。 1. **排序算法**: - **冒泡排序**:简单的比较...
1. **排序算法**:排序是编程中最常见的任务之一,包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。这些排序算法各有优缺点,适用于不同的数据规模和场景。例如,冒泡排序简单但效率较低,适合初学者理解...
这两种排序算法在实际应用中并不常用,因为有更高效的算法如快速排序、归并排序和堆排序等。然而,学习这些基本排序算法有助于理解排序原理,为理解和优化更复杂的算法奠定基础。 在C语言中实现这些排序算法,通常...