排序

一.利用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"; 
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值