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

C語言函數排序

發布時間: 2022-05-22 05:12:36

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語言基礎類型。

㈡ 如何用C語言排序

試想一下,如果讓你自己設計qsort函數,需要些什麼東西,首地址要有吧,總共有幾個元素要有吧,每個元素佔多大的內存要有吧(想想就知道函數內部要根據內存塊的大小交換數據實現排序),最後一個規則總要有吧,qsort的靈活性在於規則是活的不是死的,其實大多數語言的排序都是類似的機制啦。。。看下qsort的原型
void
qsort(void
*base,int
nelem,int
width,int
(*fcmp)(const
void
*,const
void
*));
base就是所謂的首地址,nelem就是元素個數,width,就是每個元素的大小,fcmp是一個函數指針,這里函數的定義要類似於int
cmp(const
void*a,const
void*b),其實很多人不知道怎麼使用qsort主要是在於對這個函數不懂得如何寫,其實想想就知道函數把每個元素的地址扔給比較函數,根據比較函數的返回值來決定到底是a在前面還是b在前面,所以在函數裡面要先取出值,所以一般的寫法就是
int
cmp(const
void*a,const
void*b)
{
return
*(t*)a-*(t*)b;
}
先強制轉換成t類型再用取值符號*取出指,函數之所以用空指針是因為空指針可以指向任何類型,對於基本類型,只要將t修改為基本類型就行了,對於結構體之類的的指針,則return
((t*)a)->x-((t*)b)->x;其中t就是結構體的名稱,x就是你要比較的欄位,當然如果你要降序的話就將ab顛倒就行了,說了這么多,寫一個例子,比如要對下面的數組排序
int
a[5]={2,10,5,4,0};
qsort(a,5,sizeof(int),cmp);
比較函數
int
cmp(const
void*a,const
void*b)
{
return
*(int*)a-*(int*)b;
}
。。呵呵,啰嗦了點。希望對你有幫助

㈢ C語言如何用調用函數的方法把5個數字從小到大排序

1、在開頭處定義了兩個指針變數point_1和point_2。但此時他們並未指向任何一個變數,只是提供兩個指針變數,規定他們可以指向整形變數,至於指向哪一個整形變數,要在程序語句中指定。程序第6,7兩行的作用就是使point_1指向a,point_2指向b,此時point_1的值為&a(即a的地址),point_2的值為&b。

2、第10行輸出*point_1和*point_2的值,其中的「*」表示「指向」。*point_1表示「指針變數point_1所指向的變數」,也就是變數a。*point_2表示「指針變數point_2所指向的變數」,也就是變數b。從運行結果來看他們也就是100和10.

3、程序中有兩處出現*point_1和*point_2,但是兩者含義不同。程序第5行的*point_1和*point_2表示定義兩個指針變數*point_1和*point_2。它們前面的「*」只是表示該變數是指針變數。程序最後10行中的printf函數中的*point_1和*point_2則表示指針變數point_1和point_2所指向的變數。

㈣ 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().

㈤ C語言sort函數如何使用

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

一、可以編寫自己的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;

}

}}

對於這樣的自定義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語言基礎類型。

以下是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;

}

(5)C語言函數排序擴展閱讀:

sort函數的用法(C++排序庫函數的調用)

對數組進行排序,在c++中有庫函數幫我們實現,這們就不需要我們自己來編程進行排序了。

(一)為什麼要用c++標准庫里的排序函數

Sort()函數是c++一種排序方法之一,學會了這種方法也打消我學習c++以來使用的冒泡排序和選擇排序所帶來的執行效率不高的問題!因為它使用的排序方法是類似於快排的方法,時間復雜度為n*log2(n),執行效率較高!

(二)c++標准庫里的排序函數的使用方法

I)Sort函數包含在頭文件為#include<algorithm>的c++標准庫中,調用標准庫里的排序方法可以不必知道其內部是如何實現的,只要出現我們想要的結果即可!

II)Sort函數有三個參數:

(1)第一個是要排序的數組的起始地址。

(2)第二個是結束的地址(最後一位要排序的地址的下一地址)

(3)第三個參數是排序的方法,可以是從大到小也可是從小到大,還可以不寫第三個參數,此時默認的排序方法是從小到大排序。

Sort函數使用模板:

Sort(start,end,排序方法)

下面就具體使用sort()函數結合對數組里的十個數進行排序做一個說明!

例一:sort函數沒有第三個參數,實現的是從小到大

#include<iostream>

#include<algorithm>

using namespace std;

int main()

{

int a[10]={9,6,3,8,5,2,7,4,1,0};

for(int i=0;i<10;i++)

cout<<a[i]<<endl;

sort(a,a+11);

for(int i=0;i<10;i++)

cout<<a[i]<<endl;

return 0;

}

編譯

GCC,GNU組織開發的開源免費的編譯器

MinGW,Windows操作系統下的GCC

Clang,開源的BSD協議的基於LLVM的編譯器

Visual C++:: cl.exe,Microsoft VC++自帶的編譯器

集成開發環境

CodeBlocks,開源免費的C/C++ IDE

CodeLite,開源、跨平台的C/C++集成開發環境

Orwell Dev-C++,可移植的C/C++IDE

C-Free

Light Table

Visual Studio系列

Hello World

㈥ 如何用函數實現三個數的排序(用的是C語言)

一:全局變數

#include<stdio.h>

inta,b,c;//定義三個全局變數

voidsort()//不需要參數
{
intt;
if(a>b)
{
t=a;a=b;b=t;
}
if(b>c)
{
t=b;b=c;c=t;
}
if(a>b)
{
t=a;a=b;b=t;
}
}

intmain()
{
printf("輸入:");
scanf("%d%d%d",&a,&b,&c);
sort();
printf("排序:%d<%d<%d ",a,b,c);
return0;
}

㈦ c語言怎樣通過函數調用實現選擇排序法

c語言通過函數調用實現選擇排序法:

1、寫一個簡單選擇排序法的函數名,包含參數。int SelectSort(int * ListData,int ListLength);

2、寫兩個循環,在循環中應用簡單選擇插入排序:

int SelectSort(int * ListData,int ListLength)

{

int i , j ;

int length = ListLength;

for(i=0;i<=length-2;i++)

{

int k = i;

for(j=i+1;j<=length-1;j++)

{

if(ListData[k]>ListData[j])

{

k=j;

}

}

if(k!=i)

{

int tmp = ListData[i];

ListData[i] = ListData[k];

ListData[k] = tmp;

}

}


return 0;

}

4、簡單選擇排序中,需要移動的記錄次數比較少,主要的時間消耗在對於數據的比較次數。基本上,在比較的時候,消耗的時間復雜度為:n*n。

㈧ 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;

}

}}

(8)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;

}

㈨ c語言,使用函數的選擇法排序

voidselectionsort(inta[],intm)
{
inti,j;
intk;
inttmp;

for(i=0;i<m-1;i++)//控制循環次數,n個數需要n-1次循環
{
k=i;
for(j=i+1;j<m;j++)
{
if(a[j]<a[k])
k=j;
}
//i不等於k是就證明a[i]不是最小的,
//i等於k時證明a[i]就是本輪比較過程中最小的值
if(i!=k)
{
tmp=a[i];
a[i]=a[k];
a[k]=tmp;
}
}
}

㈩ c語言怎麼用自定義函數排序

用冒泡排序法,代碼如下:for(j=0;j<=9;j++)
//10人的總成績進行排序
{
for
(i=0;i<10-j;i++)
if
(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;}
}
for(i=0;i<10;i++)
//列印排序後的總分{printf("%5d",a[i]);}

熱點內容
ubuntupython3安裝 發布:2025-02-14 00:14:45 瀏覽:661
和平精英怎麼更新比較快安卓 發布:2025-02-14 00:14:35 瀏覽:974
怎麼改密碼鎖 發布:2025-02-13 23:47:39 瀏覽:852
androidbitmap獲取大小 發布:2025-02-13 23:47:38 瀏覽:559
怎麼把升級鴻蒙系統變回安卓 發布:2025-02-13 23:36:07 瀏覽:595
偶校驗c語言 發布:2025-02-13 23:22:52 瀏覽:937
芒果如何提取離線緩存視頻 發布:2025-02-13 23:16:12 瀏覽:793
王者榮耀微信區安卓哪裡分低 發布:2025-02-13 23:14:10 瀏覽:658
安裝linuxvmwaretools 發布:2025-02-13 22:56:02 瀏覽:8
浪潮伺服器如何引導系統安裝光碟 發布:2025-02-13 22:56:02 瀏覽:112