冒泡排序是排序算法的一種,思路清晰,代碼簡潔,常被用在大學生計算機課程中。“冒泡”這個名字的由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。這里以從小到大排序為例進行講解。基本思想及舉例說明
員工經過長期磨合與沉淀,具備了協作精神,得以通過團隊的力量開發出優質的產品。創新互聯堅持“專注、創新、易用”的產品理念,因為“專注所以專業、創新互聯網站所以易用所以簡單”。公司專注于為企業提供做網站、成都做網站、微信公眾號開發、電商網站開發,小程序開發,軟件按需定制等一站式互聯網企業服務。
冒泡排序的基本思想就是不斷比較相鄰的兩個數,讓較大的談廳返元素不斷地往后移。經過一輪比較就,選出最大的數;經過第2輪比較,就選出次大的數,以此類推。下面以對 3 2 4 1 進伏簡行冒泡排序含饑說明。
1.這個算法用rand函數產生新的要排序的數據,與已有的有序數列中的數據依次比較,如果遇到比他大的數據,就從該數據開始,一直交換到末尾,達到一個插入的效果。從而形成有序的數列。
2.此外,只用rand函數并不能達到真正隨機的效果。如果要實現真正隨機的效果,還要配合srand函數才行。
3.具體代碼如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("請輸入一個種子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++) 。
#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);
}
}//你參考參考,嘿
#includestdio.h
#define?N?100
void?paixu(int?*,?int?*,?int);//聲明函數
int?main()
{
int?a[N],c[N];
int?i,n=0;
printf("請輸入n個整數:");
for(i=0i++)
{
scanf("%d",a[i]);
n++;
if(getchar()=='\n')
break;
}
paixu(a,?c,?n);//調用函數,數組只需仔饑給出數組名
return?0;
}
void?paixu(int?a[N],int?c[N],?int?n)
{
int?i,j,s=0;
念搜返??for(i=0;in;i++)
{
c[i]=0;
}
for(i=0;in;i++)
for(j=i+1;jn;j++)
{
if(a[i]==a[j])
c[i]=1;
}
for(i=0;in;i++)
{
s=1;
for(j=0;jn;j++)
{
if(c[j]==0a[i]漏凱a[j])
{
s++;
}
}
printf("%d?",s);
}
}
當前標題:c語言函數排序代碼 c語言 排序函數
文章路徑:http://vcdvsql.cn/article0/ddpceoo.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、域名注冊、外貿建站、網站導航、網站改版、服務器托管
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯