c++快速排序
来源:互联网 发布:linux卸载scim 编辑:程序博客网 时间:2024/05/16 14:17
#include<iostream>
#include <ctime>
#include <fstream>
using namespace std;
void QuickSort(int *A,int p,int r);
int Partition(int *A,int p,int r);
#define MAX_LEN 1000000
int A[MAX_LEN];
int main()
{
ifstream cin;
ofstream mycout;
srand(time(0));
double cost_time;
double starttime,endtime;
//生成1000000以内的整数,50000个
mycout.open("input.txt");
for(int i=0;i<MAX_LEN;i++)
{
mycout<<rand()%(100000)<<" ";
}
mycout.close();
cin.open("input.txt");
for( i=0;i<MAX_LEN;i++)
{
cin>>A[i];
}
cin.close();
starttime=(double)clock();
QuickSort(A,0,MAX_LEN-1);
endtime=(double)clock();
cost_time=(endtime-starttime);
mycout.open("output.txt");
for(i=0;i<MAX_LEN;i++)
{
mycout<<A[i]<<" ";
}
mycout.close();
cout<<"插入排序花费了:"<<cost_time/1000<<"s"<<endl;
return 0;
}
void QuickSort(int *A,int p,int r)
{
if (p<r)
{
int q=Partition(A,p,r);
QuickSort(A,p,q-1);
QuickSort(A,q+1,r);
}
}
int Partition(int *A,int p,int r)
{
int x=A[r];
int i=p-1;
for (int j=p;j<=r-1;j++)
{
if (A[j]<=x)
{
i++;
int temp=A[j];
A[j]=A[i];
A[i]=temp;
}
}
int temp=A[r];
A[r]=A[i+1];
A[i+1]=temp;
return i+1;
}
#include <ctime>
#include <fstream>
using namespace std;
void QuickSort(int *A,int p,int r);
int Partition(int *A,int p,int r);
#define MAX_LEN 1000000
int A[MAX_LEN];
int main()
{
ifstream cin;
ofstream mycout;
srand(time(0));
double cost_time;
double starttime,endtime;
//生成1000000以内的整数,50000个
mycout.open("input.txt");
for(int i=0;i<MAX_LEN;i++)
{
mycout<<rand()%(100000)<<" ";
}
mycout.close();
cin.open("input.txt");
for( i=0;i<MAX_LEN;i++)
{
cin>>A[i];
}
cin.close();
starttime=(double)clock();
QuickSort(A,0,MAX_LEN-1);
endtime=(double)clock();
cost_time=(endtime-starttime);
mycout.open("output.txt");
for(i=0;i<MAX_LEN;i++)
{
mycout<<A[i]<<" ";
}
mycout.close();
cout<<"插入排序花费了:"<<cost_time/1000<<"s"<<endl;
return 0;
}
void QuickSort(int *A,int p,int r)
{
if (p<r)
{
int q=Partition(A,p,r);
QuickSort(A,p,q-1);
QuickSort(A,q+1,r);
}
}
int Partition(int *A,int p,int r)
{
int x=A[r];
int i=p-1;
for (int j=p;j<=r-1;j++)
{
if (A[j]<=x)
{
i++;
int temp=A[j];
A[j]=A[i];
A[i]=temp;
}
}
int temp=A[r];
A[r]=A[i+1];
A[i+1]=temp;
return i+1;
}
0 0
- 排序-快速排序(c)
- 快速排序--C语言
- 快速排序(c#)
- 快速排序C
- C++快速排序算法
- 快速排序QuickSort.c
- 快速排序(C#)
- 快速排序算法 C
- 快速排序(C++)
- 快速排序C语言
- (C#)快速排序 Quicksort
- 快速排序 C代码
- 快速排序(C)
- C快速排序算法
- 快速排序 Java/C
- C快速排序
- 快速排序C语言版
- 快速排序--C语言
- 小米手机修改android:icon="@drawable/icon"图标无变化的原因
- Project Euler 题解 #63 Powerful digit counts
- awk 简介
- 重写EditText,使其具有下划线
- LimeJS Demo学习2 box2d使用
- c++快速排序
- Linux下安装jdk
- Timus 1225. Flags Fibonacci的应用
- C语言程序员必读的五本书------转自嵌入式linux中文站
- Linux Shell脚本入门学习
- 深入学习Make命令和Makefile(上)(3)
- MFC 单文档窗口最大化显示
- C++类成员函数中static变量小测试
- 更改git clone时默认检出的分支