当前位置:编程学习 > C/C++ >>

[C/C++]_[对数组内的数字进行从小到大排序]

场景:
 
1.有时候需要把集合或数组里的数据排序后展现出来时.
 
2.由于有些数据结构处理需要先对数组进行排序才能进行时.
 
 
文件: test_sort.cpp
 
[cpp]  
#include <stdio.h>  
#include <algorithm>  
#include <stdlib.h>  
#include <iostream>  
#include <time.h>  
#include <assert.h>  
#include <vector>  
#include <windows.h>  
  
using namespace std;  
  
void InsertSort(vector<int>& array,size_t length)  
{  
    int key = 0;  
    for(size_t j=1;j<length;++j)  
    {  
        int i = j-1;  
        key = array[j];  
        while(i>=0 && array[i] > key)  
        {  
            array[i+1] = array[i];  
            --i;  
        }  
        array[i+1] = key;  
    }  
}  
  
bool cmp(int a,int b)  
{  
    return a<b;  
}  
  
int main(int argc, char *argv[])  
{  
    printf("Hello, world\n");  
      
    //RAND_MAX  
    srand(time(NULL));  
    const int kMaxNum = 100000;  
    vector<int> v1(kMaxNum,0);  
    for(int i=0;i<kMaxNum;++i)  
    {  
        v1[i] = rand()%100;  
    }  
    vector<int> v2(v1);  
    //这个在windows下是毫秒级别.  
    //1.使用库函数排序.      
    cout << CLOCKS_PER_SEC << endl;  
    double time=clock();  
    sort(v1.begin(),v1.end(),cmp);  
    double Inteval = clock()-time;  
    cout << "排序耗时 单位(毫秒): " << Inteval << endl;  
  
    //1.验证排序.  
    int pre = v1[0];  
    for(int i=0;i<kMaxNum;++i)  
    {  
        assert(v1[i] >= pre);  
        pre = v1[i];  
    }  
  
    //2.使用自己的排序算法.  
    size_t length = v2.size();  
    time=clock();  
    InsertSort(v2,length);  
    Inteval = clock()-time;  
    cout << "插入排序耗时 单位(毫秒): " << Inteval << endl;  
    pre = v1[0];  
    for(int i=0;i<kMaxNum;++i)  
    {  
        assert(v1[i] >= pre);  
        pre = v1[i];  
    }  
  
    return 0;  
}  
 
输出,执行了4次,可见插入排序的确不怎么地:
[plain]  
Hello, world  
1000  
排序耗时 单位(毫秒): 36  
插入排序耗时 单位(毫秒): 32114  
  
Hello, world  
1000  
排序耗时 单位(毫秒): 38  
插入排序耗时 单位(毫秒): 27737  
  
Hello, world  
1000  
排序耗时 单位(毫秒): 37  
插入排序耗时 单位(毫秒): 32807  
  
Hello, world  
1000  
排序耗时 单位(毫秒): 44  
插入排序耗时 单位(毫秒): 28157  
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,