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...