include cstdlib 或 #include stdlib.h
成都創(chuàng)新互聯(lián)主營臺山網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都APP應用開發(fā),臺山h5重慶小程序開發(fā)公司搭建,臺山網(wǎng)站營銷推廣歡迎臺山等地區(qū)企業(yè)咨詢
qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))
參數(shù)表
*base: 待排序的元素(數(shù)組,下標0起)。
num: 元素的數(shù)量。
width: 每個元素的內(nèi)存空間大?。ㄒ宰止?jié)為單位)??捎胹izeof()測得。
int(*)compare: 指向一個比較函數(shù)。*elem1 *elem2: 指向待比較的數(shù)據(jù)。
比較函數(shù)的返回值
返回值是int類型,確定elem1與elem2的相對位置。
elem1在elem2右側返回正數(shù),elem1在elem2左側返回負數(shù)。
控制返回值可以確定升序/降序。
產(chǎn)生隨機數(shù)的函數(shù)也是rand(),不是rank().
#includestdio.h
void?sort(float?*a,?int?n)
{
int?i,j,tmp;
for(i=0;?in-1;?i++)
for(j=0;?jn-i-1;?j++)
if(a[j]a[j+1])
{
tmp?=?a[j];
a[j]?=?a[j+1];
a[j+1]?=?tmp;
}
}
void?main()
{
float?a[5];
int?i;
printf("請輸入五個數(shù)(逗號隔開):");
scanf("%f,%f,%f,%f,%f",a[0],a[1],a[2],a[3],a[4]);
sort(a,5);
printf("排序后為:");
for(i=0;?i5;?i++)
printf("%.2f?",a[i]);
printf("\n");
}
或者三個數(shù)的。
void sort(int *a, int *b, int *c)
{
int tmp;
if(*a*b){
tmp = *b;
*b = *a;
*a = tmp;
}
if(*a*c){
tmp = *c;
*c = *a;
*a = tmp;
}
if(*b*c){
tmp = *c;
*c = *b;
*b = tmp;
}
return;
}
擴展資料:
C語言中沒有預置的sort函數(shù)。如果在C語言中,遇到有調(diào)用sort函數(shù),就是自定義的一個函數(shù),功能一般用于排序。
一、可以編寫自己的sort函數(shù)。
如下函數(shù)為將整型數(shù)組從小到大排序。void sort(int *a, int l)//a為數(shù)組地址,l為數(shù)組長度。
{ ?
int i, j; ?
int v; ? ?//排序主體
for(i = 0; i l - 1; i ++) ? ? ?
for(j = i+1; j l; j ++)
?
{ ? ? ? ? ?
if(a[i] a[j])//如前面的比后面的大,則交換。
? ? ?
{
? ? ? ? ?
v = a[i];
? ? ? ? ?
a[i] = a[j];
? ? ? ? ?
a[j] = v;
? ? ?
}
?
}
}
對于這樣的自定義sort函數(shù),可以按照定義的規(guī)范來調(diào)用。
二、C語言有自有的qsort函數(shù)。
功 能: 使用快速排序例程進行排序。頭文件:stdlib.h
原型:
void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));
參數(shù):
1、待排序數(shù)組首地址。
2、數(shù)組中待排序元素數(shù)量。
3、各元素的占用空間大小4 指向函數(shù)的指針,用于確定排序的順序,這個函數(shù)必須要自己寫比較函數(shù),即使要排序的元素是int,float一類的C語言基礎類型。
給你一個直接插入排序
#include "stdio.h"
void InsertSort(int a[], int left, int right) {//對數(shù)組a從下標為left到right區(qū)域進行直接插入排序
int i, j, tmp;
for(i = left + 1; i = right; i++) {
for(j = i - 1, tmp = a[i]; j = left tmp a[j]; j++)
a[j + 1] = a[j];
a[j + 1] = tmp;
}
}
void main( ) {
int i, n, a[100];
scanf("%d", n);
for(i = 0; i n; i++)
scanf("%d", a[i]);
InsertSort(a, 0, n - 1);
printf("\n");
for(i = 0; i n; i++) printf("%d\t", a[i]);
}
C語言中沒有吧?C++中倒是有一個:
next_permutation(array,array+arrlength)
使用的頭文件是#include algorithm
示例:
#include?iostream
#include?algorithm????///?next_permutation,?sort
using?namespace?std;
int?main?()?{
int?myints[]?=?{1,2,3,1};
sort?(myints,myints+4);
do?{
cout??myints[0]??'?'??myints[1]??'?'??myints[2]??'?'?myints[3]'\n';
}?while?(?next_permutation(myints,myints+4)?);????///獲取下一個較大字典序排列
cout??"After?loop:?"??myints[0]??'?'??myints[1]??'?'??myints[2]??'?'?myints[3]?'\n';
return?0;
}