编程珠玑第一章习题
第一题
如果不缺内存,如何使用一个库的语言实现一种排序算法以表示和排序集合
解法一 使用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