sort qort函数

sort函数  排序 头文件 
#include<algorithm>

#include<iostream>
#include<algorithm>
using namespace std;
bool cmp1(int a,int b)
{return a>b;}//升序排列
bool cmp2(int a,int b)
{return a<b;}//降序排列
int main()
{
 int n,i,s[100];
 while(scanf("%d",&n)!=EOF)
 {
  for(i=0;i<n;i++)

   scanf("%d",&s[i]);

  sort(s,s+n,cmp1);
  for(i=0;i<n;i++)

   printf("%d  
",s[i]);
  printf("\n");
  sort(s,s+n,cmp2);
  for(i=0;i<n;i++)

   printf("%d  
",s[i]);printf("\n");
 }
 return 0;
}

 #include<iostream>

#include<algorithm>
using namespace std;
bool cmp1(char a,char b)
{
 return a>b; //升序排列
}
bool cmp2(char a,char b)
{
 return a<b; 
//降序排列
}
int main()
{
 int n,i;
 char s[100];
 while(scanf("%d",&n)!=EOF)
 {
  getchar();
  for(i=0;i<n;i++)

   scanf("%c",&s[i]);

  sort(s,s+n,cmp1);
  for(i=0;i<n;i++)

   printf("%c 
",s[i]);
  printf("\n");
  sort(s,s+n,cmp2); 

  for(i=0;i<n;i++)

   printf("%c 
",s[i]);printf("\n");
 }
 return 0;
}

C++里实现对string数组的排序
方法一:(string本身就是个容器)
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
void main()
{
 string strArray[2] = { "hello", "abc" };
 sort(strArray, strArray+2); //
排序的起始地址和结束地址后一位
 for (int i = 0; i < 2; i++)
 {
  cout <<
strArray[i] << endl;
 }
}
方法二:将字符串都放在vector里
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
int main()
{
 vector<string>
strArray ;
 string str[4] = {"hello, world!", "welcome to
cpp.", "effective c++", "exceptional c++"};
 
 for(int i = 0; i<4; i++)
        
strArray.push_back(str[i]);  //依次存入vector
strArray
 sort(strArray.begin(), strArray.end());
 
 vector<string>::iterator
st;
 for(st = strArray.begin(); st != strArray.end();
st++)
       
cout<<*st<<endl;   
//用iterator实现,也可用cout<<strArray.at(i)实现

       

 system("pause");
 return 0;
}

 

 

qort函数

#include<iostream>
#include<algorithm>
using namespace std;
int compare(const void *a,const void *b)
{
    
return *(int*)b-*(int*)a;  
}

int main()
{
    
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
    
for(i=0;i<10;i++)
       
cout<<a[i];

     cout<<endl;

    
qsort((void *)a,10,sizeof(int),compare);
    
for(i=0;i<10;i++)
       
cout<<a[i];

    
cout<<endl;
    
return 0;
}

 

qort函数对字符串排序

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[100][100];
int i,n;
int cmp(const void *a,const void *b)
{
    
return(strcmp((char*)a,(char*)b));
}
int main()
{
 while(scanf("%d",&n))
 {
  for(i=0;i<n;i++)

   scanf("%s",s[i]);

  qsort(s,n,sizeof(s[0]),cmp);

  for(i=0;i<n;i++)

   printf("%s\n",s[i]);

 }
 return(0);
}

 

 

一、对int类型数组排序

Sample:
#include<stdio.h>
#include<stdlib.h>
int cmp ( const void *a , const void *b )
{
 return *(int *)a - *(int *)b; 
//强制转换类型
}
int main()
{
 int n,i,s[100];
 while(scanf("%d",&n)!=EOF)
 {
  for(i=0;i<n;i++)

   scanf("%d",&s[i]);

  qsort(s,n,sizeof(s[0]),cmp);

  for(i=0;i<n;i++)

   printf("%d  
",s[i]);
 }
 return 0;
}

二、对char类型数组排序(同int类型)

//Sample:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp( const void *a , const void *b )
{
 return *(char *)a - *(char *)b;
}
int main()
{
 int n,i;
 char word[100];
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%s",word);
  int t=strlen(word);
  qsort(word,t,sizeof(word[0]),cmp);

  printf("%s\n",word);
 }
 return 0;
}

 

三、对double类型数组排序(特别要注意)

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int cmp( const void *a , const void *b )
{
 return *(double *)a > *(double *)b
? 1 : -1;
}
int main()
{
 double in[100];
 int i,n;
 while(scanf("%d",&n)!=EOF)
 {
  for(i=0;i<n;i++)

   scanf("%lf",&in[i]);

  qsort(in,n,sizeof(in[0]),cmp);

  for(i=0;i<n;i++)

   printf("%.1lf
",in[i]);
  printf("\n");
 }
 return 0;
}

原文链接: https://www.cnblogs.com/pcoda/archive/2011/05/16/2104572.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    sort qort函数

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/25575

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午3:24
下一篇 2023年2月8日 上午3:24

相关推荐