當前位置:首頁 » 編程語言 » c語言數組排序函數

c語言數組排序函數

發布時間: 2022-05-25 15:24:11

A. c語言:輸入5個數,用調用函數的方法,從小到大排序 用簡單點的

#include<stdio.h>

voidsort(float*a,intn)

{

inti,j,tmp;

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

for(j=0;j<n-i-1;j++)

if(a[j]>a[j+1])

{

tmp=a[j];

a[j]=a[j+1];

a[j+1]=tmp;

}

}

voidmain()

{

floata[5];

inti;

printf("請輸入五個數(逗號隔開):");

scanf("%f,%f,%f,%f,%f",&a[0],&a[1],&a[2],&a[3],&a[4]);

sort(a,5);

printf("排序後為:");

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

printf("%.2f",a[i]);

printf(" ");

}

或者三個數的。

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;

}

(1)c語言數組排序函數擴展閱讀:

C語言中沒有預置的sort函數。如果在C語言中,遇到有調用sort函數,就是自定義的一個函數,功能一般用於排序。

一、可以編寫自己的sort函數。
如下函數為將整型數組從小到大排序。void sort(int *a, int l)//a為數組地址,l為數組長度。

{

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函數,可以按照定義的規范來調用。

二、C語言有自有的qsort函數。
功 能: 使用快速排序常式進行排序。頭文件:stdlib.h
原型:

void qsort(void *base,int nelem,int width,int (*fcmp)(const void *,const void *));

參數:

1、待排序數組首地址。

2、數組中待排序元素數量。

3、各元素的佔用空間大小4 指向函數的指針,用於確定排序的順序,這個函數必須要自己寫比較函數,即使要排序的元素是int,float一類的C語言基礎類型。

B. c語言 ,編寫一個函數input(),sort(),實現數組的輸入,排序。

input()裡面的輸入的數據存放在數組中,只要在調用sort()的時候使用數組作為參數就可以!例如下題:
//從鍵盤輸入n(1<n<=10)個數據,並對這n個數據從小到大排序
#include<stdio.h>
void main()
{
int i,n,a[10];
void input(int a[],int n);
void sort(int a[],int n);
printf("請輸入數據的個數n:");
scanf("%d",&n);
input(a,n);
sort(a,n);
printf("排序結果:");
for(i=0;i<n;i++)
printf("%6d",a[i]);
printf("\n");
}
void input(int a[],int n)
{
int i;
printf("請輸入n個數據:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
void sort(int a[],int n)//選擇法排序
{int t,index,k,i;
for(k=0;k<n-1;k++)
{index=k;
for(i=k+1;i<n;i++)
if(a[index]>a[i])index=i;
t=a[index];a[index]=a[k];a[k]=t;
}}

C. 編寫函數,使用選擇排序法對數組進行排序(用C語言)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

intmain(void)
{
inta[10],i,j,tmp,b;
srand(time(NULL));
for(i=0;i<10;i++)
a[i]=rand()%100;
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf(" ");
for(i=0;i<9;i++)
{
tmp=i;
for(j=i+1;j<10;j++)
{
if(a[tmp]>a[j])
tmp=j;
}
if(i!=tmp)
{
b=a[tmp];
a[tmp]=a[i];
a[i]=b;
}
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf(" ");
return0;
}


隨機產生數組中的元素, 更合理一些。 網路中有各種版本。

D. c語言運用sort 排序函數,需要的頭文件是什麼

sort不屬於C語言的標准函數,所以也沒有相應的頭文件,但是可以自定義。

sort函數為將整型數組從小到大排序。

voidsort(int*a,intl)//a為數組地址,l為數組長度。

{

inti,j;

intv;

//排序主體

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;

}

}}

(4)c語言數組排序函數擴展閱讀

c語言自有的qsort函數

#include<stdio.h>

#include<stdlib.h>

intcomp(constvoid*a,constvoid*b)//用來做比較的函數。

{

return*(int*)a-*(int*)b;

}

intmain()

{

inta[10]={2,4,1,5,5,3,7,4,1,5};//亂序的數組。

inti;

qsort(a,n,sizeof(int),comp);//調用qsort排序

for(i=0;i<10;i++)//輸出排序後的數組

{

printf("%d ",array[i]);

}

return0;

}

E. c語言數組用sort函數排序

#include<stdio.h>
#include<algorithm>
main(){
int a[10]={10,9,8,7,6,5,4,3,2,1};
std::sort(a,a+10);
for(int i=0;i<10;i++)
printf("%d\t",a[i]);}

F. C語言編寫函數,數組排序

void Swap(int *a, int *b)

{

int tmp = *a;

*a = *b;

*b = tmp;

}

void Selectsort(int *arr, int sz)

{for (int end=sz-1; end>=0; end--)

{

int max = end;

int i;

for ( i = 0; i <= end; i++)//選出最大下標

{

if (arr[i] > arr[max])

{

max = i;

}

}

Swap(&arr[end], &arr[max]);

}

}

int main()

{

int arr[5] = { 1, 3, 2, 5, 4 };

int sz = sizeof(arr) / sizeof(arr[0]);

for (int i = 0; i <= sz - 1; i++)

{

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

}

Selectsort(arr, sz);

for (int i = 0; i <= sz - 1; i++)

{

printf("%d ", arr[i]);

}

system("pause");

return 0;

}

(6)c語言數組排序函數擴展閱讀:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md--&gt;m域寬,列印出來以後,在控制台上,顯示m位;

如果要列印的數的位數如果超過我們設定m則原樣輸出;

如果要列印的數的位數如果小於設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。

G. C語言中的排序函數是什麼

include <cstdlib> 或 #include <stdlib.h>
qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))

參數表
*base: 待排序的元素(數組,下標0起)。
num: 元素的數量。
width: 每個元素的內存空間大小(以位元組為單位)。可用sizeof()測得。
int(*)compare: 指向一個比較函數。*elem1 *elem2: 指向待比較的數據。
比較函數的返回值
返回值是int類型,確定elem1與elem2的相對位置。
elem1在elem2右側返回正數,elem1在elem2左側返回負數。
控制返回值可以確定升序/降序。

產生隨機數的函數也是rand(),不是rank().

H. C語言:以下程序中函數sort的功能是對a數組中的數據進行由大到小的排序

sort(&aa[3],5);
表示從aa[3]這個元素往後5個元素進行排序,也就是4,5,6,7,8這幾個數進行排序,其餘元素不變。

其實,從函數的定義也能看出來,void sort(int a[],int n),其中int a[]是表示開始排序的首地址,int n表示參與排序元素的個數,如果這樣調用sort(aa,10)那就是對整個數組進行排序,因為aa(數組名)表示數組的首地址,當然&aa[3]也是同理的了。。

I. c語言 定義一個函數,將一個一維數組中數據從小到大排序

#include<stdio.h>
#define N 10
void sortarray(int *a,int n) { int i,j,k;
for ( i=0;i<n-1;i++ ) for ( j=i+1;j<n;j++ ) if ( a[i]>a[j] ) {k=a[i];a[i]=a[j];a[j]=k;}
}
void main() { int a[N],i;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
sortarray(a,N);
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}

J. c語言 編寫一個排序函數,實現對主函數中數組的升序排序.

#include<stdio.h>
voidmysort(int*p,intn){
inti,j,k;
for(i=0;i<n;i++){
for(k=i,j=k+1;j<n;j++)
if(p[k]>p[j])
k=j;
if(k-i)
j=p[k],p[k]=p[i],p[i]=j;
}
}
intmain(intargc,char*argv[]){
inta[10]={100,90,80,70,60,50,40,30,20,10,},i;
mysort(a,10);
for(i=0;i<10;printf("%d",a[i++]));
printf(" ");
return0;
}

熱點內容
linux2個ftp伺服器 發布:2025-02-13 01:44:31 瀏覽:14
戴爾r730網路配置後如何保存 發布:2025-02-13 01:38:27 瀏覽:344
php用什麼編譯 發布:2025-02-13 01:37:12 瀏覽:703
手機緩存的文件路徑是在哪 發布:2025-02-13 01:34:58 瀏覽:563
oppo手機密碼哪裡設置 發布:2025-02-13 01:30:38 瀏覽:683
android網易 發布:2025-02-13 01:30:37 瀏覽:488
不聯網怎麼看自己的配置 發布:2025-02-13 01:00:38 瀏覽:858
飢荒聯機版獨立伺服器有什麼用 發布:2025-02-13 01:00:38 瀏覽:637
高級語言都有與之對應的編譯程序或解釋程序 發布:2025-02-13 00:54:46 瀏覽:571
塞班java 發布:2025-02-13 00:48:27 瀏覽:158