qsort快排c语言和c++应用

以上部分来自:

qsort  功 能: 使用快速排序例程进行排序  用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));  各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针,用于确定排序的顺序  程序例:  #include <iostream>  using namespace std;  #include <stdlib.h>  #include <string.h>  int compare( const void *a, const void *b);  char * list[5]= {"cat","car","cab","cap","can"};  int main()  pascal 例程  program quicksort;  const  max = 100000;  max = 1000;  type  tlist = array[1..max] of longint;  var  data : tlist;  i : longint;  procedure qsort(var a : tlist);  procedure sort(l,r: longint);  var i,j,x,y: longint;  begin  i:=l; j:=r;  x:=a[(l+r) div 2];  repeat  while a<x do inc(i);  while x<a[j] do dec(j);  if i<=j then  begin  y:=a;a:=a[j];a[j]:=y;  inc(i);dec(x);  end;  until i>j;  if l<j then sort(l,j);  if i<r then sort(i,r);  end;  begin  sort(1,max);  end;  begin  write(‘Creating ‘,Max,’ random numbers between 1 and 500000′);  randomize;  for i:=1 to max do  data:=random(500000);  writeln;  writeln(‘Sorting…’);  qsort(data);  writeln;  for i:=1 to max do  begin  write(data:7);  if (i mod 10)=0 then  writeln;  end;  end.  c/c++  c函数qsort()和bsearch()的用法  使用qsort()排序 并 用 bsearch()搜索是一个比较常用的组合,使用方便快捷。  qsort 的函数原型是void __cdecl qsort ( void *base, size_t num, size_t width, int (__cdecl *comp)(const void *, const void* ) )  其中base是排序的一个集合数组,num是这个数组元素的个数,width是一个元素的大小,comp是一个比较函数。  比如:对一个长为1000的数组进行排序时,int a[1000]; 那么base应为a,num应为 1000,width应为 sizeof(int),comp函数随自己的命名。  qsort(a,1000,sizeof(int ),comp);  其中comp函数应写为:  int comp(const void *a,const void *b)  {  return *(int *)a-*(int *)b;  }  是对一个二维数组的进行排序:  int a[1000][2]; 其中按照a[0]的大小进行一个整体的排序,其中a[1]必须和a[0]一起移动交换。  qsort(a,1000,sizeof(int)*2,comp);  int comp(const void *a,const void *b)  {  return ((int *)a)[0]-((int *)b)[0];  }  对字符串进行一个排序:  char a[1000][20];  qsort(a,1000,sizeof(char)*20,comp);  int comp(const void *a,const void *b  {  return strcmp((char *)a,(char *)b);  }  对一个结构体进行排序:  typedef struct str  {  char str1[11];  char str2[11];  }str,*stri;  str strin[100001]=;  int compare(const void *a,const void *b)  {  return strcmp( ((str*)a)->str2 , ((str*)b)->str2 );  }  qsort(strin,total,sizeof(str),compare);  程序例:  #include<iostream.h>  #include<stdlib.h>  #include<string.h>  #define N 8  int compare(const void *a,const void *b);  void main()  {  char s[8][10]={"January","February","March","April","May","June","July","September"};  int i;  qsort(s,8,sizeof(char)*10,compare);  for(i=0;i<N;i++)  cout<<s<<endl;  }  int compare(const void *a,const void *b)  {  if(strlen((char *)a)!=strlen((char *)b))  return strlen((char *)a)-strlen((char*)b);  return (strcmp((char *)a,(char *)b));  }//vc++ 6.0    // VS2008编译通过,具有代表性的例子  #include <stdlib.h>  #include <stdio.h>  #include <string.h>  int compare(const void *arg1,const void *arg2);  int main(int argc,char **argv)  {  int i;  argv++;  argc–;  qsort((void *)argv,(size_t)argc,sizeof(char *),compare);  for(i=0;i<argc;++i)  {  printf("%s ",argv);  printf("\n");  }  }  int compare(const void *arg1,const void *arg2)  {  return _stricmp(*(char **)arg1,*(char **)arg2);  }  在运行输入cmd,在qsort.exe 参数1 参数2  将会排序

Source:

以上部分来自:

qsort函数应用大全(转)

我们可以失望,但不能盲目。

qsort快排c语言和c++应用

相关文章:

你感兴趣的文章:

标签云: