资源简介
随机生成10000个数,对同一组数可分别用八种排序方式排序。并分别计算时间。八种排序为:插入、冒泡、归并、选择、堆、快速、希尔、基数排序。
代码片段和文件信息
#include
//#include
#include “time.h“
#include “math.h“
#include “stdio.h“
using namespace std;
#define max_size 10
#define N 10000
#define max N
int other[N];
void swap(int &aint &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
//插入排序
int insert_sort(int A[N+1])
{
clock_t startend;
start=clock();
for(int i=2;i<=N;i++)
if(A[i] {
A[0]=A[i];
for(int j=i-1;A[0]<=A[j];j--)
A[j+1]=A[j];
A[j+1]=A[0];
}
/* for(int i=2;i<=N+1;i++)
{
A[0]=A[i];
for(int j=1;j {
//改进
if(A[0]<=A[j])
{
A[j+1]=A[j];
}
else
{
A[j+1]=A[0];
//break;
}
if(A[0]<=A[j])
{
for(int k=i;k>j;k--)
A[k]=A[k-1];
break;
}
}
A[j]=A[0];
}*/
end=clock();
cout< for(i=1;i<=N;i++)
printf(“%5d“A[i]);
//cout< //cout< cout< return 0;
}
//冒泡排序
bubble_sort(int A[N+1])
{
clock_t startend;
//A[0]为哨兵
start=clock();
for(int i=1;i for(int j=N;j>=i;j--)
{
if(A[j] {
A[0]=A[j-1];
A[j-1]=A[j];
A[j]=A[0];
}
}
end=clock();
cout< for(i=1;i<=N;i++)
printf(“%5d“A[i]);
cout< return 0;
}
//快速排序
partition(int *Aint iint j)
{
int privot=A[i];
while(i {
while(A[j]>=privot&&i j--;
A[i]=A[j];
while(privot>=A[i]&&i i++;
A[j]=A[i];
}
A[i]=privot;
return i;
}
void quick_sort(int *Aint lowint high)
{
int pos;
//clock_t startend;
//start=clock();
if(low {
pos=partition(Alowhigh);
quick_sort(Alowpos-1);
quick_sort(Apos+1high);
}
//end=clock();
//cout< //for(int i=1;i<=N;i++)
// cout< //cout< // return 0;
}
//归并排序
/*void merge(int A[N+1]int *qint iint mint n)
{
int jk;
for(j=m+1k=i;i<=m&&j<=n;k++)
{
if(A[i]<=A[j])
q[k]=A[i++];
else
q[k]=A[j++];
}
while(i<=m)
q[k++]=A[i++];
while(j<=n)
q[k++]=A[j++];
}
void m_sort(int A[N+1]int *pint sint t)
{
int mT[N];
if(s==t)
p[s]=A[s];
else
{
m=(s+t)/2;
m_sort(ATsm);
m_sort(ATm+1t);
merge(Tpsmt);
}
}
*/
void Merge_Sort(int *p int b int e)
{
if(e-b+1 > 2) //当数组元素个数大于2时需要继续向下划分(递归)
{
Merge_Sort(p b (e+b)/2);
Merge_Sort(p (e+b)/2+1 e);
//合并已排序好的两部分(b(e+b)/2) 和 ((e+b)/2+1e)
int i = b j = (e+b)/2+1 k=b;
while(i<=(b+e)/2 && j<=e)
{//比较两个下标i和j所代表的元素
- 上一篇:C语言经典编程100题+答案
- 下一篇:猴子摘香蕉实验报告(含代码)
相关资源
- 拓扑排序可以进行全部排列
- 各种排序算法的实现和性能比较C程序
- 归并排序算法
- 小顶堆操作
- 多关键字排序C语言
- 随机生成10000数字,进行快速排序
- 内部排序算法性能比较———c++
- 综合查找算法顺序查找、折半查找、
- C语言 内部排序算法的性能分析.rar
- C语言基数排序——顺序队列实现
- C++实战源码-数组的排序
- C++实战源码-使用函数模板进行排序
- C++实战源码-使用指向指针的指针对字
- C++实战源码-使用指针实现整数排序
- C++实战源码-实现报表数据的排序
- 高级冒泡排序高级(c语言)
- c++ 整形数据排序 入门级
- 堆和堆排序源代码
- c++ 模拟excel排序
- c++ 电话薄数字排序
- c++ 数组冒泡排序
- C++实战源码-数组冒泡排序法
- 排序算法经典大合集C++(数据全部测
- c++ 冒泡排序法
- 冒泡排序法
- c++ 常用排序算法
- c语言根据身份证号进行年龄排序
- c语言插入排序
- 冒泡排序,完整实现排序过程
- 实现按照姓名进行排序的算法
评论
共有 条评论