选中值快速排序,各位帮忙看看哪里出问题了?
时间:2011-12-02
来源:互联网
#include <iostream>
#include <fstream>
using namespace std;
void quicksort(int *a, int size);
void quicksort(int *a, int l[code=C/C++][/code]ow, int high);
void divide(int *a, int low, int high, int midl, int midh);
int main()
{
ifstream fin("quicksort.in");
ofstream fout("quicksort.out");
int n, d;
fin>>n>>d;
int *a=new int [n];
for(int i=0; i<n; ++i) {
fin>>a[i];
}
quicksort(a, n);
for(int i=0; i<n;++i) {
cout<<a[i]<<endl;
}
return 0;
}
void quicksort(int *a, int size)
{
quicksort(a, 0, size-1);
}
void quicksort(int *a, int low, int high)
{
int midl=low, midh=high;
if(low>=high) return;
else {
divide(a, low, high, midl, midh);
quicksort(a, midh+1, high);
quicksort(a, low, midl-1);
}
}
void divide(int *a, int low, int high, int midl, int midh)
{
int *tArray=new int[high-low+1];
int median=(a[low]+a[high]+a[(high+low+1)/2]+1) / 3;
int i=0, j=high-low;
for(int p=low; p<=high; ++p) {
if(a[p]<median) tArray[i++]=a[p];
else if(a[p]>median) tArray[j--]=a[p];
}
midl=i;
midh=j;
for(int k=i; k<=j; ++k) tArray[k]=median;
int tmpi=0;
for(int k=low; k<=high; ++k) a[k]=tArray[tmpi++];
}
#include <fstream>
using namespace std;
void quicksort(int *a, int size);
void quicksort(int *a, int l[code=C/C++][/code]ow, int high);
void divide(int *a, int low, int high, int midl, int midh);
int main()
{
ifstream fin("quicksort.in");
ofstream fout("quicksort.out");
int n, d;
fin>>n>>d;
int *a=new int [n];
for(int i=0; i<n; ++i) {
fin>>a[i];
}
quicksort(a, n);
for(int i=0; i<n;++i) {
cout<<a[i]<<endl;
}
return 0;
}
void quicksort(int *a, int size)
{
quicksort(a, 0, size-1);
}
void quicksort(int *a, int low, int high)
{
int midl=low, midh=high;
if(low>=high) return;
else {
divide(a, low, high, midl, midh);
quicksort(a, midh+1, high);
quicksort(a, low, midl-1);
}
}
void divide(int *a, int low, int high, int midl, int midh)
{
int *tArray=new int[high-low+1];
int median=(a[low]+a[high]+a[(high+low+1)/2]+1) / 3;
int i=0, j=high-low;
for(int p=low; p<=high; ++p) {
if(a[p]<median) tArray[i++]=a[p];
else if(a[p]>median) tArray[j--]=a[p];
}
midl=i;
midh=j;
for(int k=i; k<=j; ++k) tArray[k]=median;
int tmpi=0;
for(int k=low; k<=high; ++k) a[k]=tArray[tmpi++];
}
作者: superjarry 发布时间: 2011-12-02
n是元素个数,d忽略
作者: superjarry 发布时间: 2011-12-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28