c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
C語言冒泡排序法代碼
冒泡排序是排序算法的一種,思路清晰,代碼簡潔,常被用在大學(xué)生計(jì)算機(jī)課程中?!懊芭荨边@個(gè)名字的由來是因?yàn)樵酱蟮脑貢?huì)經(jīng)由交換慢慢“浮”到數(shù)列的頂端,故名。這里以從小到大排序?yàn)槔M(jìn)行講解?;舅枷爰芭e例說明
冒泡排序的基本思想就是不斷比較相鄰的兩個(gè)數(shù),讓較大的元素不斷地往后移。經(jīng)過一輪比較就,選出最大的數(shù);經(jīng)過第2輪比較,就選出次大的數(shù),以此類推。下面以對 3 2 4 1 進(jìn)行冒泡排序說明。
1.這個(gè)算法用rand函數(shù)產(chǎn)生新的要排序的數(shù)據(jù),與已有的有序數(shù)列中的數(shù)據(jù)依次比較,如果遇到比他大的數(shù)據(jù),就從該數(shù)據(jù)開始,一直交換到末尾,達(dá)到一個(gè)插入的效果。從而形成有序的數(shù)列。
2.此外,只用rand函數(shù)并不能達(dá)到真正隨機(jī)的效果。如果要實(shí)現(xiàn)真正隨機(jī)的效果,還要配合srand函數(shù)才行。
3.具體代碼如下:#include "stdio.h"#include "stdlib.h"void main(){int a[10],temp,r; printf("請輸入一個(gè)種子\n"); scanf("%d",r);srand(r); for(int i=0;i9;i++) 。
如何用c語言編寫冒泡排序的程序?
對擁有 n 個(gè)元素的數(shù)組 R[n] 進(jìn)行 n-1 輪比較。
第一輪,逐個(gè)比較 (R[1], R[2]),? (R[2], R[3]),? (R[3], R[4]),? …….? (R[N-1], R[N]),最大的元素被移動(dòng)到 R[n] 上。
第二輪,逐個(gè)比較 (R[1], R[2]),? (R[2], R[3]),? (R[3], R[4]),? …….? (R[N-2], R[N-1]),次大的元素被移動(dòng)到 R[n-1] 上。
。。。。。。
以此類推,直到整個(gè)數(shù)組從小到大排序。
具體的代碼實(shí)現(xiàn)如下所示:
#include stdio.h
int main(){
int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
int i, j, temp;
//冒泡排序算法:進(jìn)行 n-1 輪比較
for(i=0; i10-1; i++){
//每一輪比較前 n-1-i 個(gè),也就是說,已經(jīng)排序好的最后 i 個(gè)不用比較
for(j=0; j10-1-i; j++){
if(nums[j] nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//輸出排序后的數(shù)組
for(i=0; i10; i++)
{
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
C語言冒泡排序法是什么?
冒泡排序法,是C語言常用的排序算法之一,意思是對一組數(shù)字進(jìn)行從大到小或者從小到大排序的一種算法。
具體方法是:
相鄰數(shù)值兩兩交換。從第一個(gè)數(shù)值開始,如果相鄰兩個(gè)數(shù)的排列順序與我們的期望不同,則將兩個(gè)數(shù)的位置進(jìn)行交換(對調(diào));如果其與我們的期望一致,則不用交換。重復(fù)這樣的過程,一直到最后沒有數(shù)值需要交換,則排序完成。
C語言常見的排序算法:
1、冒泡排序
基本思想:比較相鄰的兩個(gè)數(shù),如果前者比后者大,則進(jìn)行交換。每一輪排序結(jié)束,選出一個(gè)未排序中最大的數(shù)放到數(shù)組后面。
2、快速排序
基本思想:選取一個(gè)基準(zhǔn)元素,通常為數(shù)組最后一個(gè)元素(或者第一個(gè)元素)。從前向后遍歷數(shù)組,當(dāng)遇到小于基準(zhǔn)元素的元素時(shí),把它和左邊第一個(gè)大于基準(zhǔn)元素的元素進(jìn)行交換。在利用分治策略從已經(jīng)分好的兩組中分別進(jìn)行以上步驟,直到排序完成。
3、直接插入排序
基本思想:和交換排序不同的是它不用進(jìn)行交換操作,而是用一個(gè)臨時(shí)變量存儲(chǔ)當(dāng)前值。當(dāng)前面的元素比后面大時(shí),先把后面的元素存入臨時(shí)變量,前面元素的值放到后面元素位置,再到最后把其值插入到合適的數(shù)組位置。
4、直接選擇排序
基本思想:依次選出數(shù)組最小的數(shù)放到數(shù)組的前面。首先從數(shù)組的第二個(gè)元素開始往后遍歷,找出最小的數(shù)放到第一個(gè)位置。再從剩下數(shù)組中找出最小的數(shù)放到第二個(gè)位置。以此類推,直到數(shù)組有序。
以上內(nèi)容參考? ?百度百科-排序算法、百度百科-c語言冒泡排序
上一篇:c語言沒有round函數(shù) round c語言
欄 目:C語言
下一篇:c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
本文標(biāo)題:c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/17103.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘
- 01-10c語言求1+2+...+n的解決方法


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達(dá)式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?