资源简介

利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序。 要求: 1)至少采用三种方法实现上述问题求解(提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序)。并把排序后的结果保存在不同的文件中。 2)统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。

资源截图

代码片段和文件信息

#include
#include
#include//常用函数
#include//头文件里面包含了对系统操作的大部分api函数
#include//应用到系统时间函数时必须使用的头文件
#include//格式化输出
using namespace std;//使用标准命名空间std
class SortableSList  
{
     public:
         SortableSList();
         void Reload();        //初始数据函数
         void Save_File();     //保存信息
         void InsertSort();    //直接插入排序
         void SelectSort();    //简单选择排序
         void BubbleSort();    //冒泡排序
         void QuickSort();     //快速排序
         void ShellSort();     //希尔排序
         void QuickSort(int leftint right); 
         void PrintBeforeSort();   //排序前数组输出
         void PrintAfterSort();    //排序后数组输出
     private:
         int Partition(int leftint right);
         void InsSort(int h);
         int *l;         
         int n;
         int *randarray;
};

SortableSList::SortableSList()
{
    cout<<“ | 请你输入要排序的数字个数   n : “;
    cin>>n;                                   //输入要生成随机数的个数
cout<<“ |                                                                             |“< cout<<“ |----------------------------------------------------------------------------|“< cout<<“ |                                                                             |“<    cout<<“ | 请稍等......                                                                |“<    l=new int[n];
    randarray=new int[n];
    for(int i=0;i l[i]=randarray[i]=rand()%30000;
}


void SortableSList::Reload()                  //初始数据函数
{
   int i;
   for(i=0;i l[i]=randarray[i];

}
void SortableSList::Save_File()               //保存信息
{
     int i;
     ofstream ofile(“排序.txt“);               //文件输出流
     for(i=1;i<=n;i++)
         ofile<     ofile.close();
     ifstream infile(“排序.txt“);              //输入文件对操作
     for(i=1;i<=n;i++)
         infile>>l[i];
     infile.close();
}
//~~~~~~~~~~~~~~~直接插入排序~~~~~~~~~~~~~~~~~~~
void SortableSList::InsertSort()
{   
int ij;
    for(i=1;i       int x=l[i];
       for(j=i-1;j>=0&&x    {
           l[j+1]=l[j];
       }  
       l[j+1]=x;
     }
}
//~~~~~~~~~~~~~~~简单选择排序~~~~~~~~~~~~~~~~~~~~~
void Swap(int&aint&b)
{
     int e=a;a=b;b=e;
}

void SortableSList::SelectSort()
{
     int s;
     for(int i=0;i  {
         s=i;
         for(int j=i+1;j             if(l[j]  s=j;
 }
         Swap(l[i]l[s]);
     }
}
//~~~~~~~~~~~~~~~~~~~冒泡排序~~~~~~~~~~~~~~~~~~~~
void SortableSList::BubbleSort()
{

    int i=n-1k=1jlast;
    while(i>0){
last=0;
for(j=0;j {
if(l[j+1] {
Swap(l[j]l[j+1]);
last=j;
}
}
i=last;
    }
}
//~~~~~~~~~~~~~~~快速排序~~~~~~~~~~~~~~~~~~~~~~~~~
int SortableSList::Partition(int leftint right)
{
int key;
key=l[left];
while(left w

评论

共有 条评论