#include?stdio.h
成都創(chuàng)新互聯(lián)專注于寧波企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開發(fā)。寧波網(wǎng)站建設(shè)公司,為寧波等地區(qū)提供建站服務(wù)。全流程定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
//選擇排序算法,升序
void?sort(int?*arr,int?n)
{
int?i,j,k;
int?tmp;
for(i=0;in-1;i++)
{
k=i;??//開始一趟選擇排序,假定第i個(gè)元素是后面n-i+1個(gè)未排序的元素中最小的元素
for(j=i+1;jn;j++)
{
if(arr[k]??arr[j])?//如果發(fā)現(xiàn)比當(dāng)前最小元素還小的元素,則更新記錄最小元素的下標(biāo)k
k=j;
}
//如果最小元素的下標(biāo)不是后面n-i+1的未排序序列的第一個(gè)元素,則需要交換第i個(gè)元素和后面找到的最小元素的位置
if(k?!=?i)
{
tmp=arr[k];
arr[k]=arr[i];
arr[i]=tmp;
}
}
}
int?main()
{
int?a[10]={?-5,-9,-8,3,9,2,-28,101,-395,0};
int?i;
sort(a,10);
for(i=0;i10;i++)
printf("%d?",a[i]);
printf("\n");
return?0;
}
//運(yùn)行結(jié)果
F:\c_worka.exe
-395?-28?-9?-8?-5?0?2?3?9?101
include cstdlib 或 #include stdlib.h
qsort(void* base, size_t num, size_t width, int(*)compare(const void* elem1, const void* elem2))
參數(shù)表
*base: 待排序的元素(數(shù)組,下標(biāo)0起)。
num: 元素的數(shù)量。
width: 每個(gè)元素的內(nèi)存空間大?。ㄒ宰止?jié)為單位)??捎胹izeof()測得。
int(*)compare: 指向一個(gè)比較函數(shù)。*elem1 *elem2: 指向待比較的數(shù)據(jù)。
比較函數(shù)的返回值
返回值是int類型,確定elem1與elem2的相對位置。
elem1在elem2右側(cè)返回正數(shù),elem1在elem2左側(cè)返回負(fù)數(shù)。
控制返回值可以確定升序/降序。
產(chǎn)生隨機(jī)數(shù)的函數(shù)也是rand(),不是rank().
#include?stdio.h
void?mysort(int?*p,int?n){
int?i,j,k;
for(i=0;in;i++){
for(k=i,j=k+1;jn;j++)
if(p[k]p[j])
k=j;
if(k-i)
j=p[k],p[k]=p[i],p[i]=j;
}
}
int?main(int?argc,char?*argv[]){
int?a[10]={100,90,80,70,60,50,40,30,20,10,},i;
mysort(a,10);
for(i=0;i10;printf("%d?",a[i++]));
printf("\n");
return?0;
}
輸入10個(gè)字符串,并按字母從小到大排序
#include "stdio.h"
#include "string.h"
void sort(char array[][20],int n);
main(void)
{
char str[10][20];
int i,j,k,n;
printf("input n (n=10):");
scanf("%d",n);
printf("input %d string:",n);
for(i=0;in;i++)
gets(str[i]); //輸入N個(gè)字符串
sort(str,n); //對輸入的字符串排序
printf("sort string:\n");
for(i=0;in;i++)
puts(str[i]);
return 0;
}
void sort(char array[][20],int n) //定義排序函數(shù)
{
char temp[20];
int i,j,k;
for(i=1;in-1;i++)
{
k=i;
for(j=i+1;jn;j++)
if(strcmp(array[k],array[j])0)
k=j;
if(k!=i)
{
strcpy(temp,array[i]); //字符串交換順序
strcpy(array[i],array[k]);
strcpy(array[k],temp);
}
}
}
如上源碼所示,其實(shí)也不難發(fā)現(xiàn),就一個(gè)排序函數(shù)便可以解決;解決思想,還是交換法;在這里明白字符串?dāng)?shù)組str[0],便是第一個(gè)主的字符串,跟這個(gè)2維str[0][20]是一個(gè)意思
void?paixu(struct?worker?wor[10])
{
int?i,?j,?k;
struct?worker?temp;
for?(i?=?0;?i??9;?i++)
{
k?=?i;
for?(j?=?i?+?1;?j10;?j++){
if?(wor[j].numwor[k].num)
j?=?k;
}
if?(k?!=?i)
{
temp?=?wor[i];?wor[i]?=?wor[k];?wor[k]?=?temp;
}
}
for?(i?=?0;?i??10;?i++)
printf("%d,%s\n",?wor[i].num,?wor[i].name);
}
#include?stdio.h
#include?stdlib.h
#include?string.h
#define?EMPCNT?10
struct?employee
{
int?id;
char?name[16];
};
void?sort(?struct?employee?*e?)
{
int?i,j;
struct?employee?temp;
for(?i=0;?iEMPCNT;?i++?)
{
for(?j=i+1;jEMPCNT;j++?)
{
if?(?e[j].id??e[i].id?)
{
/*?swap*/
temp?=?e[i];
e[i]?=?e[j];
e[j]?=?temp;
}
}
}
}
int?search(?struct?employee?*e,?int?id?)
{
int?low,?high,?mid;
low?=?0;?
high?=?EMPCNT?-?1;
while(?low?=?high?)
{
mid?=?(?low+high?)?/?2;
if?(?id??e[mid].id?)
high?=?mid?-?1;
else?if?(?id??e[mid].id?)
low?=?mid?+?1;
else
return?mid;
}
return?-1;
}
void?main()
{
struct?employee?e[EMPCNT];
int?i,?id=0,?m=-1;
for(?i=0;?iEMPCNT;?i++?)
{
printf(?"輸入第?%d?員工的員工號,姓名:",?i+1?);
scanf(?"%d?%s",?e[i].id,?e[i].name?);
fflush(?stdin?);
}
sort(?e?);
for(?i=0;?iEMPCNT;?i++?)
printf(?"%d?%s\n",?e[i].id,?e[i].name?);
printf("要查找的員工號:"?);
scanf(?"%d",?id?);
fflush(?stdin?);
m?=?search(?e,?id?);
if?(?m??0?)
printf(?"%d?未找到\n",?id?);
else
printf(?"%d?%s\n",?e[m].id,?e[m].name?);
getchar();
}
網(wǎng)站題目:c語言工號升序排序函數(shù),c語言中升序排列是什么意思
路徑分享:http://redsoil1982.com.cn/article44/phhihe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)、用戶體驗(yàn)、App設(shè)計(jì)、網(wǎng)站收錄、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)