编程珠玑第一章第一题的解法,常用的排序

来源:互联网 发布:巨人网络 吃鸡 编辑:程序博客网 时间:2024/06/05 17:28

编程珠玑第一章习题
第一题
如果不缺内存,如何使用一个库的语言实现一种排序算法以表示和排序集合
解法一 使用c++的sort

#include <algorithm>    #include <iostream>    using namespace std;    template <class T>    int getArrLength( T& arr){//获取普通数组的长度        return sizeof(arr)/sizeof(arr[0]);    }    template <class T>    int getCharArrLength(T& arr){//获取字符数组的长度        return sizeof(arr)/sizeof(arr[0])-1;    }    template <class T>    void printArr(T& arr){        for(int i=0;i<getArrLength(arr);i++){            cout<<arr[i]<<" ";        }        cout<<endl;    }    bool cmp(int a,int b)//降序排序    {        return a>b;    }    int main(){        char arr[10]="dcaefrmnz";        cout<<arr<<endl;        sort(arr,arr+getCharArrLength(arr));        cout<<arr<<endl;    //  int arr[10]={3,4,6,5,10,3,7,5,0,14} ;    //  printArr(arr);    //  sort(arr,arr+getArrLength(arr),cmp);    //  printArr(arr);      }

解法二 使用c语言的qsort

#include <stdio.h>    #include <stdlib.h>    int intcomp(int *x, int *y)    {   return *x - *y;    }    int a[1000000];    int main()    {   int i, n=0;        while (scanf("%d", &a[n]) != EOF)            n++;        qsort(a, n, sizeof(int), intcomp);        for (i = 0; i < n; i++)            printf("%d\n", a[i]);        return 0;    }

解法三 使用set库

    #include <iostream>    #include <set>    using namespace std;    int main()    {   set<int> S;        int i;        set<int>::iterator j;        while (cin >> i)            S.insert(i);        for (j = S.begin(); j != S.end(); ++j)            cout << *j << "\n";        return 0;    }

解法四 使用vector库
可以看看这位的了解一下如何使用
blog.csdn.net/hnu_zxc/article/details/6746029

0 0
原创粉丝点击