• 大小: 12KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: C/C++
  • 标签: c++  排序  性能比较  

资源简介

利用随机函数产生N个随机整数(20000以上),对这些数进行多种方法进行排序

资源截图

代码片段和文件信息

#include
#include
#include//常用函数
#include
#include
#include//格式化输出

using namespace std;//声明了名字空间std有关函数和变量都可以直接调用而不需要在前面加域运算符“::“比如没有这句的话输出语句如下:std::cout<<a<<std::endl
int compare[7]change[7]move[7];  //compare数组是比较次数,change数组是交换次数,move数组是移动次数
class SortableSList  
{
    public:
        SortableSList();
        void Reload();       //初始数据函数
        void Save_File();    //保存信息
        void InsertSort();   //直接插入排序
        void SelectSort();   //简单选择排序
        void BubbleSort();   //冒泡排序
        void QuickSort();    //快速排序
        void ShellSort();    //希尔排序
        void HeapSort();   //堆排序
        void MergeSort();    //两路合并排序
        void QuickSort(int leftint right); 
        void PrintBeforeSort();
        void PrintAfterSort();
    private:
        int Partition(int leftint right);
        void InsSort(int h);
        void Merge(int leftint midint right);
        void Min(int i);
        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]=20000+rand();
}

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

}
void SortableSList::Save_File() //保存信息
{
    int i;
    ofstream ofile(“排序.txt“);//如果文件不存在,则新建一个文件
    for(i=0;i        ofile<    ofile.close();
    
}
//~~~~~~~~~~~~~~~直接插入排序~~~~~~~~~~~~~~~~~~~
void SortableSList::InsertSort()
{   
 int ij;
    for(i=1;i        int x=l[i];
        move[0]++;
        for(j=i-1;j>=0&&x  {
            compare[0]++;
            l[j+1]=l[j]change[0]++;
            move[0]++;
        }
        compare[0]++;
        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;
        compare[1]++;
        for(int j=i+1;j            if(l[j]        Swap(l[i]l[s])move[1]=move[1]+3change[1]++;
    }
}
//~~~~~~~~~~~~~~~快速排序~~~~~~~~~~~~~~~~~~~~~~~~~
int SortableSList::Partition(int leftint right)
{
    int i=leftj=right+1;
    do{
        do 
        {i++; compare[3]++;}while(l[i]        do 
        {j--; compare[3]++;}while(l[j]>l[left]);
         if(i    }whil

评论

共有 条评论