一.利用stdlib中的qsort对字符串进行排序
// crt_qsort.c // arguments: every good boy deserves favor /* This program reads the command-line * parameters and uses qsort to sort them. It * then displays the sorted arguments. */ #include <stdlib.h> #include <string.h> #include <stdio.h> int compare( const void *arg1, const void *arg2 ); int main( int argc, char **argv ) { int i; /* Eliminate argv[0] from sort: */ argv++; argc--; /* Sort remaining args using Quicksort algorithm: */ qsort( (void *)argv, (size_t)argc, sizeof( char * ), compare ); /* Output sorted list: */ for( i = 0; i < argc; ++i ) printf( " %s", argv[i] ); printf( "/n" ); } int compare( const void *arg1, const void *arg2 ) { /* Compare all of both strings: */ return _stricmp( * ( char** ) arg1, * ( char** ) arg2 ); }
二.利用stdlib中的qsort对整数进行排序
#include <stdlib.h> #include <iostream.h> int compare(const void *arg1, const void *arg2); void main(void) { const int max_size = 10; // 数组允许元素的最大个数 int num[max_size]; // 整型数组 // 从标准输入设备读入整数,同时累计输入个数, // 直到输入的是非整型数据为止 int n; for (n = 0; cin >> num[n]; n ++); // C标准库中的快速排序(quick-sort)函数 qsort(num, n, sizeof(int), compare); // 将排序结果输出到标准输出设备 for (int i = 0; i < n; i ++) cout << num[i] << "/n"; } // 比较两个数的大小, // 如果*(int *)arg1比*(int *)arg2小,则返回-1 // 如果*(int *)arg1比*(int *)arg2大,则返回1 // 如果*(int *)arg1等于*(int *)arg2,则返回0 int compare(const void *arg1, const void *arg2) { return (*(int *)arg1 < *(int *)arg2) ? -1 : (*(int *)arg1 > *(int *)arg2) ? 1 : 0; }
三.利用STL中的Vector和排序算法对整数进行排序
#include <iostream> #include <vector> #include <algorithm> using namespace std; void main(void) { vector<int> num; // STL中的vector容器 int element; // 从标准输入设备读入整数, // 直到输入的是非整型数据为止 while (cin >> element) num.push_back(element); // STL中的排序算法 sort(num.begin(), num.end()); // 将排序结果输出到标准输出设备 for (int i = 0; i < num.size(); i ++) cout << num[i] << "/n"; }