快速排序 C语言版
2016-12-03 10:03
218 查看
#include<stdio.h>
void QuickSort(int s[],int l,int r);
int AdjustArray(int s[],int l,int r);
int main() {
int i,n,s[100];
printf("快速排序:\n");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&s[i]);
}
QuickSort(s,0,n-1);
printf("排序结果:\n");
for(i=0;i<n;i++){
printf("%d ",s[i]);
}
printf("\n");
return 0;
}
void QuickSort(int s[],int l,int r) {
int i;
if(l<r){
i=AdjustArray(s,l,r);
QuickSort(s,l,i-1);
QuickSort(s,i+1,r);
}
}
int AdjustArray(int s[],int l,int r){
int i=l,j=r;
int x=s[l];
while(i<j){
while(i<j&&s[j]>=x){
j--;
}
if(i<j){
s[i]=s[j];
i++;
}
while(i<j&&s[i]<x){
i++;
}
if(i<j){
s[j]=s[i];
j--;
}
}
s[i]=x;
return i;
}
void QuickSort(int s[],int l,int r);
int AdjustArray(int s[],int l,int r);
int main() {
int i,n,s[100];
printf("快速排序:\n");
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&s[i]);
}
QuickSort(s,0,n-1);
printf("排序结果:\n");
for(i=0;i<n;i++){
printf("%d ",s[i]);
}
printf("\n");
return 0;
}
void QuickSort(int s[],int l,int r) {
int i;
if(l<r){
i=AdjustArray(s,l,r);
QuickSort(s,l,i-1);
QuickSort(s,i+1,r);
}
}
int AdjustArray(int s[],int l,int r){
int i=l,j=r;
int x=s[l];
while(i<j){
while(i<j&&s[j]>=x){
j--;
}
if(i<j){
s[i]=s[j];
i++;
}
while(i<j&&s[i]<x){
i++;
}
if(i<j){
s[j]=s[i];
j--;
}
}
s[i]=x;
return i;
}
相关文章推荐
- 快速排序C语言版
- 快速排序Qsort--C语言版
- 数据结构与算法(C语言版)__快速排序
- 经典排序——快速排序——C语言版
- 【排序】 快速排序代码-C语言版
- 快速排序
- 2018 蓝桥杯 省赛 B组 原题 C语言B组 第5题 第九届蓝桥杯真题 快速排序
- Python--排序--快速排序
- 快速排序
- 菜鸟学习历程【15-3】快速排序
- [算法简结]递归分治(三):快速排序
- 第九届 5.快速排序
- 利用C实现泛型(generics)效果---原地洗牌,快速排序
- 快速排序
- 练习《算法导论》之排序:插入排序,归并排序,堆排序,快速排序
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- ASP/VBS 数组快速排序
- c语言排序之冒泡排序,选择排序,插入排序,快速排序总结
- 快速排序实现之递归与非递归
- 快速插入排序、冒泡排序