#include?stdio.h
成都創新互聯專注于寧波企業網站建設,成都響應式網站建設公司,商城網站定制開發。寧波網站建設公司,為寧波等地區提供建站服務。全流程定制制作,專業設計,全程項目跟蹤,成都創新互聯專業和態度為您提供的服務
//選擇排序算法,升序
void?sort(int?*arr,int?n)
{
int?i,j,k;
int?tmp;
for(i=0;in-1;i++)
{
k=i;??//開始一趟選擇排序,假定第i個元素是后面n-i+1個未排序的元素中最小的元素
for(j=i+1;jn;j++)
{
if(arr[k]??arr[j])?//如果發現比當前最小元素還小的元素,則更新記錄最小元素的下標k
k=j;
}
//如果最小元素的下標不是后面n-i+1的未排序序列的第一個元素,則需要交換第i個元素和后面找到的最小元素的位置
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;
}
//運行結果
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))
參數表
*base: 待排序的元素(數組,下標0起)。
num: 元素的數量。
width: 每個元素的內存空間大?。ㄒ宰止潪閱挝唬?捎胹izeof()測得。
int(*)compare: 指向一個比較函數。*elem1 *elem2: 指向待比較的數據。
比較函數的返回值
返回值是int類型,確定elem1與elem2的相對位置。
elem1在elem2右側返回正數,elem1在elem2左側返回負數。
控制返回值可以確定升序/降序。
產生隨機數的函數也是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個字符串,并按字母從小到大排序
#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個字符串
sort(str,n); //對輸入的字符串排序
printf("sort string:\n");
for(i=0;in;i++)
puts(str[i]);
return 0;
}
void sort(char array[][20],int n) //定義排序函數
{
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);
}
}
}
如上源碼所示,其實也不難發現,就一個排序函數便可以解決;解決思想,還是交換法;在這里明白字符串數組str[0],便是第一個主的字符串,跟這個2維str[0][20]是一個意思
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();
}
網站題目:c語言工號升序排序函數,c語言中升序排列是什么意思
路徑分享:http://newbst.com/article44/phhihe.html
成都網站建設公司_創新互聯,為您提供關鍵詞優化、品牌網站建設、用戶體驗、App設計、網站收錄、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯