專題 二 排序 冒泡法和選擇法

2021-10-03 19:51:49 字數 2026 閱讀 2089

一.氣泡排序:

1.演算法:

1>.基本思想:在排序過程中對元素進行兩兩比較,越小的元素會經由交換慢慢『』浮『』到陣列的最前面(低下標處),像氣泡一樣慢慢浮起。

2>.本質:

第1趟冒泡:從陣列n-1下標的元素到0下標元素遍歷,比較相鄰元素對,如果後乙個元素小於前乙個元素,則交換。第一趟結束時,最小元素『』浮起『』到達0下標位置。第二趟冒泡:從陣列n-1下標的元素到1下標元素遍歷(因為0下標的已經是最小元素,已經到位,無需再參加比較),比較相鄰元素對,如果後乙個元素小於前乙個元素,則交換。第二趟結束時,本趟最小元素到達1下標位置。以此類推,最多n-1趟冒泡,便可完成排序。

3>.**實現如下:

#include

#define size 10

void

print

(int a,

int n)

void

bubblesort

(int a,

int n)

}int

main()

while

(n<

1||n>size)

;printf

("please input %d elements:\n"

,n);

for(i=

0;i)scanf

("%d"

,&array[i]);

//讀入陣列元素

bubblesort

(array,n)

;//呼叫函式完成排序

print

(array,n)

;return0;

}

//用指標方法對10個整數按由大到小順序排序。用冒泡法進行排序

二.選擇法排序:

1.演算法:

1>.本質:不斷查詢最大(小)元素的過程。

第一次:n個元素中最小的和第乙個元素對換。第二次:n-1個元素中最小的和第二個元素對換。······.第n-1次:最後兩個元素比較,小的放到第n-1個元素的位置上

2>.基本思想:把陣列分為左右兩個半區,左半區為有序子集,右半區為n-1趟選擇。每一趟選擇都在無序子集(右半區)中選擇出最小元素,並與無序子集首元素交換,然後將該元素併入有序子集。共進行n-1趟排序,每趟最多交換一次。

3>.資料結構:陣列,巢狀迴圈,記錄本次查詢最小值下標的變數,交換的中間變數

4>.**實現如下:

#include

void

input

(int

*pa,

int n)

void

sort

(int

*pa,

int n)

if(index!=k)

//如果本趟最小元素沒有到位}}

void

output

(const

int*pa,

int n)

intmain()

while

(n<

1||n>10)

;input

(a,n)

;//呼叫函式,完成輸入

printf

("the original array is:\n");

output

(a,n)

;//呼叫函式,輸出原始陣列

sort

(a,n)

;//呼叫函式,完成排序

printf

("the sorted array is:\n");

output

(a,n)

;//呼叫函式,輸出排序後的陣列

return0;

}

//用指標方法對10個整數按由大到小順序排序。用選擇法進行排序

冒泡法和選擇法

程式的版權和版本宣告部分 檔名稱 fibnacci.cpp 作 者 單虹毓 完成日期 2013 年 12 月 5 日 版本號 v1.0 輸入描述 無 問題描述 冒泡和選擇法 程式輸出 程式輸出 問題分析 include using namespace std void sortascmaopao i...

JAVA中冒泡法排序和選擇法排序

首先,我們先說下冒泡法 以公升序為例,既 1,2,3,4,5這個順序 其原理就是相鄰兩個數相比,如 a i 與a i 1 比較,如果前面的比後面大,則這兩個數交換,把大的數交換給a i 1 小的數交換給a i 下次比較就是a i 1 與 a i 2 繼續上一次的操作,如果後面的大於前面的,則兩個數交...

比較冒泡法和選擇法

先上選擇法和冒泡法 1.選擇法 include int main temp a j a j a min a min temp for i 0 i 9 i printf 4d a i 2.冒泡法 include int main 大的氣泡往下沉,小的氣泡往上浮!注意 是a j 1 還是a j 1 深刻...