快排函数的使用语法
以對整型數(shù)組排序為例:
頭文件
#include<stdlib.h>
函數(shù)體
intcmp(const void *a, const void *b)
{
return(*(int *)a-*(int *)b);
主函數(shù)
void main()
{ .int s[100];
?qsort(s,n,sizeof(s[0]),cmp);}
PS:
1、如果排序的是字符型數(shù)組
則在函數(shù)體內(nèi)return(*(int *)a-*(int *)b); 改成?return(*(char *)a-*(char*)b);?
其他類型同理
2、要對其從s[i]開始的m個元素進行排序,只需要在第一個和第二個參數(shù)上進行一些修改:qsort(&s[i],m,sizeof(s[i]),cmp);
代碼示例:
#include <stdlib.h> #include <string.h> #include <stdio.h>int comp(const void *a,const void *b);//函數(shù)聲明int main( ) {int i;int a[10]={21,56,78,12,36,58,69,44,23,11};qsort( a, 10, sizeof(int),comp);//調用qsort(),其中第一個參數(shù)是數(shù)組名字,第二個參數(shù)是數(shù)組元素個數(shù),//第三個參數(shù)是元素所占字節(jié)數(shù),第四個是比較方式for( i = 0; i < 10; ++i )printf( " %d ", a[i] );printf( "\n" );return 0; }int comp(const void* a,const void* b)//定義數(shù)據(jù)的比較方式是從小到大排序。 {int *x=(int *)a;int *y=(int *)b;return *x-*y; }
轉載于:https://www.cnblogs.com/cszlg/archive/2012/03/22/2910533.html
總結
- 上一篇: C语言实现-双链表练习
- 下一篇: 【转】typedef函数指针的用法(C+