快速排序
2012-02-18 18:50
190 查看
快速排序是一种就地排序方法。。每次找一个基准点,左边小于该基准点,右面大于该基准点。。。
#include<iostream>
#include<string.h>
using namespace std;
int partion(int *v,int p,int r)
{ int x=v[r];
int i=p-1;
for(int j=p;j<r;++j)
if(v[j]<=x)
{ i++;
int temp=v[j];
v[j]=v[i];
v[i]=temp;
}
int a=v[r];
v[r]=v[i+1];
v[i+1]=a;
return i+1;
}
void quicksort(int *v,int p,int r)
{ if(p<r)
{ int q=partion(v,p,r);
quicksort(v,p,q-1);
quicksort(v,q+1,r);
}
}
int main()
{ while(1)
{ int n;
cin>>n;
int a[20];
for(int i=0;i<n;++i )
cin>>a[i];
quicksort(a,0,n-1);
for(int i=0;i<n;++i)
cout<<a[i]<<" ";
cout<<endl;
}
}
#include<iostream>
#include<string.h>
using namespace std;
int partion(int *v,int p,int r)
{ int x=v[r];
int i=p-1;
for(int j=p;j<r;++j)
if(v[j]<=x)
{ i++;
int temp=v[j];
v[j]=v[i];
v[i]=temp;
}
int a=v[r];
v[r]=v[i+1];
v[i+1]=a;
return i+1;
}
void quicksort(int *v,int p,int r)
{ if(p<r)
{ int q=partion(v,p,r);
quicksort(v,p,q-1);
quicksort(v,q+1,r);
}
}
int main()
{ while(1)
{ int n;
cin>>n;
int a[20];
for(int i=0;i<n;++i )
cin>>a[i];
quicksort(a,0,n-1);
for(int i=0;i<n;++i)
cout<<a[i]<<" ";
cout<<endl;
}
}
相关文章推荐
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- 05_快速排序
- 快速排序
- 快速排序lua实现 递归和栈两种实现
- C/C++ 数组排序(平均时间复杂度 O(nlogn))归并、快速、堆、希尔之希尔排序
- 快速排序 C语言实现
- 常见比较排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)
- 数据结构学习笔记排序 (快速,表排序,基数排序)
- 坐在马桶上看算法:快速排序
- 快速排序
- HDU 1157(Who's in the Middle) 快速排序
- js算法:分治法-快速排序
- 快速排序——JAVA实现(图文并茂)
- 数据结构基础 —— 快速排序 java 实现
- 【快速排序】QuickSort
- 快速排序复杂度的分析
- 冒泡排序,选择排序,快速排序
- 排序算法--快速排序
- 快速排序-6类qsort排序
- Java快速排序 分别以数组0位作为基准 和最后一位作为基准的排序演示