氣泡排序,選擇查詢,二分搜尋

2021-10-01 05:18:40 字數 1379 閱讀 4744

1.氣泡排序:

將無序陣列裡的每個數字進行大小比較,變為公升序陣列。

首先將a[1]與a[2]進行比較,若a[1]>a[2],則將兩個元素交換位置,然後比較a[2]和a[3],以此類推,直到a[n-1]和a[n]進行比較為止。上述過程為第一趟,其結果使得最大的元素被安置到最後乙個位置。然後進行第二趟排序,對前n-1個元素進行同樣的操作,其結果使得次大的元素被安置到第n-1的位置上。

}for(i=0;i2. 選擇查詢:

氣泡排序是兩兩進行交換,則要比較並最多交換n*n次,但是時間複雜度很差,因此可以用選擇查詢的方法

選擇查詢是每次在陣列中遍歷出最小或最大的數,將它與 a [ i ] 進行交換,i 從 0 開始遍歷到a [ n - 1 ], 最多交換了n

次,時間複雜度大大降低

將陣列中的元素從小到大排列     核心**:

int i,j,k;

for(i=0;ia[j])

if(k!=i) }}

3.二分搜尋:又稱「折半查詢」,即輸入乙個數x,判斷x是否在陣列a中存在。

(1)首先必須保證陣列a裡的元素是公升序排列的。

(2)計算出陣列的中間值mid,將x與mid進行比較,若相等,則直接輸出yes,結束程式,否則判斷x與a [ mid ] 的關係。

(3)若x>mid,則證明x是在mid的右邊。將left=mid+1,再進行判斷。

(4)若x(5)當 letf > right 證明已經遍歷完全,結束程式,輸出no

**如下:

#includeint f(int x, int left, int right, int a)

else

if(x

else

}}int main()

; scanf("%d%d",&n,&x);

for(i=0;i

int left=0;

int right=n-1;

int m=f(x,left,right,a);

if(m==1)

else

return 0;

}

冒泡 選擇排序與二分查詢

相鄰比較,逆序交換 如果某一趟排序,沒有 傳送任何 交換,證明資料已經有序,可以結束排序 defbubble sort alist n len alist 列表中元素個數 氣泡排序,n個數字需要 排序 n 1 趟 for i in range 1 n 在每一趟排序之前,設定乙個標誌 flag fal...

氣泡排序,選擇排序,二分查詢小結

我們知道,排序方法很多 氣泡排序,選擇排序,快速排序,希爾排序。今天,我將就我的了解來作出介紹 氣泡排序 氣泡排序是一種較為簡單的排序方法,它主要思路是遍歷所有的資料,一次比較兩個數,如果它們的順序是我們所要求的,就不變化 如果它們的大小順序和我們的要求相左,則進行交換。重複遍歷,直到沒有資料需要交...

氣泡排序 選擇排序 簡單二分查詢

1 氣泡排序 關於氣泡排序,其實就是相鄰兩兩對比,正序反序,大的 小的 往後挪乙個位置,第一遍最大 最小 肯定會在最後了,然後第二次排序不計最後乙個元素進行重排,然後以此類推 public static void main string args for int i 0 iscore j 1 for...