sort和qsort对字符数组排序

来源:互联网 发布:mac ps怎么导入照片 编辑:程序博客网 时间:2024/05/16 01:36
  1. #include <iostream>  
  2. #include <cstdlib>  
  3. #include <cstring>  
  4. #include <algorithm>  
  5. using namespace std;  
  6.   //qsort()返回值必须是int,两个参数的类型必须都是const void *,sort()头文件#include<algorithm>,qsort头文件#include<cstdlib>
  7. //升序比较:第一个元素比第二个元素大返回正数(这是元素需要交换的条件)  
  8. int compare_rise(const void *a,const void *b) {  
  9.     return *(char*)a - *(char*)b;  
  10. }  
  11.   
  12. //降序比较:第二个元素比第一个元素大返回正数(这是元素需要交换的条件)  
  13. int compare_fail(const void *a,const void *b) {  
  14.     return *(char*)b - *(char*)a ;  
  15. }  
  16.   
  17. int cmp_sort(char a, char b) {  
  18.     return a > b;  
  19. }  
  20.   
  21. void display( const char *array1, int len ) {  
  22.     for(int i = 0; i< len; ++i) {  
  23.              cout << array1[i] << " ";  
  24.     }  
  25.     cout << endl;  
  26. }  
  27.   
  28. void qsort_char() {  
  29.     char str[] = "XELMNFUVWGYRSTZAHIJKBOPQCD";  
  30.     int len = strlen( str );  
  31.     cout << "原始数据:" << endl;  
  32.     display( str, len );  
  33.     cout << "升序排序后:" << endl;  
  34.     qsort(str, len, sizeof (*str), compare_rise); ///不必包含#include <algorithm>  
  35.     display( str, len );  
  36.     cout << "降序排序后:" << endl;  
  37.     qsort(str, len, sizeof (*str), compare_fail);  
  38.     display( str, len );  
  39. }  
  40.   
  41. void sort_char() {  
  42.    char ch[100] = "XELMNFUVWGYRSTZAHIJKBOPQCD\n";  
  43.    int len = strlen(ch);  
  44.    //cout << "please input a string: " ;  
  45.   // cin >> ch;  ///scanf("%s", ch);or   gets(ch);  
  46.    cout << "升序排序后: ";  
  47.    sort(ch, ch+strlen(ch)); //必须包含#include <algorithm>  
  48.    display(ch, len);  
  49.    cout << "降序排序后: " << endl;  
  50.    sort(ch, ch+strlen(ch), cmp_sort);  
  51.    display(ch, len);  
  52. }  
  53.   
  54. int main() {  
  55.     qsort_char();  
  56.     sort_char();  
  57.     return 0;  
  58. }  
原创粉丝点击