c語言名字排序函數 c語言排序的函數

c語言中排序方法

1、冒泡排序(最常用)

創新互聯是專業的湄潭網站建設公司,湄潭接單;提供成都做網站、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行湄潭網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!

冒泡排序是最簡單的排序方法:原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右邊冒出來。(注意每一輪都是從a[0]開始比較的)

以從小到大排序為例,第一輪比較后,所有數中最大的那個數就會浮到最右邊;第二輪比較后,所有數中第二大的那個數就會浮到倒數第二個位置……就這樣一輪一輪地比較,最后實現從小到大排序。

2、雞尾酒排序

雞尾酒排序又稱雙向冒泡排序、雞尾酒攪拌排序、攪拌排序、漣漪排序、來回排序或快樂小時排序, 是冒泡排序的一種變形。該算法與冒泡排序的不同處在于排序時是以雙向在序列中進行排序。

原理:數組中的數字本是無規律的排放,先找到最小的數字,把他放到第一位,然后找到最大的數字放到最后一位。然后再找到第二小的數字放到第二位,再找到第二大的數字放到倒數第二位。以此類推,直到完成排序。

3、選擇排序

思路是設有10個元素a[1]-a[10],將a[1]與a[2]-a[10]比較,若a[1]比a[2]-a[10]都小,則不進行交換。若a[2]-a[10]中有一個以上比a[1]小,則將其中最大的一個與a[1]交換,此時a[1]就存放了10個數中最小的一個。同理,第二輪拿a[2]與a[3]-a[10]比較,a[2]存放a[2]-a[10]中最小的數,以此類推。

4、插入排序

插入排序是在一個已經有序的小序列的基礎上,一次插入一個元素*

一般來說,插入排序都采用in-place在數組上實現。

具體算法描述如下:

⒈ 從第一個元素開始,該元素可以認為已經被排序

⒉ 取出下一個元素,在已經排序的元素序列中從后向前掃描

⒊ 如果該元素(已排序)大于新元素,將該元素移到下一位置

⒋ 重復步驟3,直到找到已排序的元素小于或者等于新元素的位置

⒌ 將新元素插入到下一位置中

⒍ 重復步驟2~5

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語言中輸入5個學生的信息(包括姓名,性別,電話),怎么用sort函數將姓名按字典順序排列并輸出

#includeiostream

#includealgorithm

#includestring.h

using namespace std;

#define NUM 100

struct Str{char str[20];};

bool cmp(Str a,Str b)

{

return strcmp(a.str,b.str)0;

}

int main()

{

int n;

Str str[NUM];

scanf("%d%*c",n);//輸入人的個數

for(int i=0;in;i++)

gets(str[i].str);//依次輸入每個人的姓名,用回車鍵隔開

sort(str,str+n,cmp);

printf("排序后:\n");

for(int i=0;in;i++)

puts(str[i].str);

return 0;

}

這樣子可以嗎?

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

#include stdio.h

#include string.h#define NUM 3

struct student

{

char name[20]; /*姓名*/

long num; /*12位學號*/

double sum; /*總分*/

};

void Create_Students(struct student stu[NUM])

{

struct student *p;

printf("請輸入學生姓名 學號(12位) 總分:\n");

for( p = stu; p stu+NUM; p++)

{

scanf("%s %d %lf",p-name,p-num,p-sum); }

}

void Order_Students(struct student stu[NUM])//起泡法

{

int i,j;

struct student temp;

for(i=NUM-1;i=0;i--)

for(j=0;ji;j++)

if(stu[j].sumstu[j+1].sum)

{

temp = stu[j];

stu[j] = stu[j+1];

stu[j+1]=temp;

}

}

void main()

{

int i=1;

struct student *p;

struct student stu[NUM];

Create_Students(stu);

Order_Students(stu);

printf("%-20s %-13s %-6s %4s\n","姓名","學號(12位)","總成績","名次");

for(p=stu;pstu+NUM;p++,i++)

{

printf("%-20s %-13.0d %-8.2f %2d\n",p-name,p-num,p-sum,i);

}

}//你參考參考,嘿

c語言程序 中文按首字母排序

#include stdio.h

#include string.h

#define MAX_NAME 20 //最大名字長度

#define MAX_NUM 100 //最大學生人數

void sort_bubble(char (*pc)[MAX_NAME],int n)//排序函數

{

int i,j;

char str[MAX_NAME];

for(i=0;in-1;i++)

{

for(j=i+1;jn;j++)

{

if(strcmp(pc[i],pc[j])0)

{

strcpy(str,pc[i]);

strcpy(pc[i],pc[j]);

strcpy(pc[j],str);

}

}

}

}

void display_name(char (*pc)[MAX_NAME],int n)//顯示這n個姓名

{

int i;

for(i=0;in;i++)

{

printf("%s\n",pc[i]);

}

}

int main()

{

int i=1,n;

char str[MAX_NUM][MAX_NAME];

printf("請輸入學生總數:");

scanf("%d",n);

while(i=n)

{

printf("請輸入第%d個學生姓名:",i);

scanf("%s",str[i++-1]);

}

printf("排序前的學生名單如下:\n");

display_name(str,n);

sort_bubble(str,n);

printf("排序后的學生名單如下:\n");

display_name(str,n);

return 0;

}

說明:

1:采用的是冒泡排序,用快速排序當然快些,但我忘了

2:已驗證通過,結果正確。

3:隨意輸入人數和姓名,只要數組不越界就沒有問題!

4:兩個函數:排序和顯示

5:給分+好評

編寫C語言程序,定義函數:輸入若干學生姓名;定義函數:進行排列;輸入排序結果。

#include string.h

/*輸入若干學生姓名*/

void ReadName(char *name[],int n)

{ int i;

for(i=0;in;i++)

gets(name[i]);

}

/*進行排序,從小到大*/

void sort(char *name[],int n)

{

char mStr[80];

int i,j;

for(i=0;in-1;i++)

{ for(j=i+1;jn;j++)

{ if(strcmp(name[i],name[j])0)

{ strcpy(mStr,name[i]);

strcpy(name[i],name[j]);

strcpy(name[j],mStr);

}

}

}

}

/* 輸出 */

void Output(char *name[],int n)

{

int i;

for(i=0;in;i++) puts(name[i]);

}

網站名稱:c語言名字排序函數 c語言排序的函數
URL分享:http://m.kartarina.com/article16/dodsogg.html

成都網站建設公司_創新互聯,為您提供品牌網站設計云服務器網站收錄外貿網站建設面包屑導航全網營銷推廣

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 亚洲中文字幕无码av永久| 精品三级AV无码一区| 国产怡春院无码一区二区 | 国产爆乳无码视频在线观看| 国产av无码专区亚洲av桃花庵| 精品国产a∨无码一区二区三区 | 亚洲精品偷拍无码不卡av| 中文字幕乱偷无码av先锋蜜桃| 亚洲成a人在线看天堂无码| 色窝窝无码一区二区三区 | 中文字幕无码久久久| 精品无码av一区二区三区| 久久激情亚洲精品无码?V| 无码无套少妇毛多18PXXXX| 久久午夜无码鲁丝片直播午夜精品 | 亚洲av永久无码精品国产精品 | 成人无码AV一区二区| 无码日本精品XXXXXXXXX| 亚洲国产综合无码一区 | 亚洲精品无码久久久| 亚洲av无码专区首页| 久久精品亚洲AV久久久无码| 中文字幕无码免费久久| 午夜亚洲av永久无码精品| 无码被窝影院午夜看片爽爽jk| 69ZXX少妇内射无码| 乱色精品无码一区二区国产盗| 国内精品人妻无码久久久影院| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲成在人线在线播放无码| 在线看无码的免费网站| 无码人妻AⅤ一区二区三区| 国产乱人无码伦av在线a| 一本色道无码道在线观看| 一本一道AV无码中文字幕| 亚洲gv猛男gv无码男同短文| 亚洲av无码国产精品色午夜字幕| 亚洲色无码专区在线观看| 无码H肉动漫在线观看| 人妻丝袜中文无码av影音先锋专区| 中文成人无码精品久久久不卡|