快速排序模板(C语言)
快速排序模板(C语言)
快排的基本思想是,通过一趟排序将要排序的数据分割成独立的两部分,其中的一部分数据比另一部分的数据都要小,或者都要大,然后再把这两个独立的部分进行快速排序,整个过程可以用递归来进行。
#include<stdio.h>
void quicksort(int a[], int low, int high) // 从小到大
{
int l ,r, key;
l = low;
r = high;
key = a[l];
if(low > high) return ;
while(l < r) //
{
while(l < r && a[r] > key) // 从右往左找到比key小的元素
r--;
a[l] = a[r]; // 交换之后, r之后的元素都比key大
while(l < r && a[l] < key)// 从左往右找到比key大的元素
l++;
a[r] = a[l];//交换之后, l之前的元素都比key小
//之后再将l到r之间的元素进行排序
}
a[l] = key;
// 此时0到l-1的元素都比l+1到high的元素小
//但是0到l-1的元素和l+1到high的元素都是无序的
quicksort(a, low, l-1); // 将0到l-1的元素进行快速排序
quicksort(a, l+1, high); //将l+1到high的元素进行快速排序
}
int main()
{
int a[100];
int n;
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
quicksort(a, 0, n-1);
for(int i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
return 0;
} 相关推荐
Masimaro 2020-06-21
清溪算法君老号 2020-06-01
GhostLWB 2020-04-20
田有朋 2020-04-19
sunjunior 2020-04-10
cmsmdn 2020-03-03
shenwenjie 2020-02-26
sunjunior 2020-02-15
hanyujianke 2020-01-13
路漫 2020-01-12
sunnyJam 2019-12-31
KilluaZoldyck 2019-12-15
yuanran0 2019-12-14
Happyunlimited 2019-12-10
baike 2019-12-09
yishujixiaoxiao 2019-12-02
YUAN 2019-11-19
alicelmx 2019-11-12