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

2021-08-10 03:19:02 字數 2362 閱讀 8769

我們知道,排序方法很多:氣泡排序,選擇排序,快速排序,希爾排序。今天,我將就我的了解來作出介紹:

氣泡排序:

氣泡排序是一種較為簡單的排序方法,它主要思路是遍歷所有的資料,一次比較兩個數,如果它們的順序是我們所要求的,就不變化;如果它們的大小順序和我們的要求相左,則進行交換。重複遍歷,直到沒有資料需要交換,也就是所有的資料都按照我們的期待的順序排列,即氣泡排序成功。

下面舉乙個簡單的例子,假設陣列中的五個數,要求從小到大排列,arr[5]=;

第一次遍歷:

arr[0]和arr[1]進行比較,arr[0]>arr[1],進行交換,交換後的陣列變成 7,9,5,3,1;

arr[1]和arr[2]進行比較,arr[1]>arr[2],進行交換,交換後的陣列變成7,5,9,3,1;

arr[2]和arr[3]進行比較,arr[2]>arr[s],進行交換,交換後的陣列變成7,5,3,9,1;

arr[3]和arr[4]進行比較,arr[3]>arr[4],進行交換,交換後的陣列變成7,5,3,1,9;

我們可以看到,第一次遍歷,最大的數字9已經被交換到了最後乙個數字,這正是符合我們的預期的。

我們可以想象,第二次遍歷後,7被交換到arr[3]的位置,陣列變成5,3,1,7,9;

第三次遍歷後,5被交換到arr[3]的位置,陣列變成3,1,5,7,9;

第四次遍歷後,3被交換到arr[2]的位置,陣列變成1,3,5,7,9;

至此,氣泡排序完成,資料排列成功。

接下來附上**

void bubble_sort(int arr)

} }}int main()

; bubble_sort(arr);

for (int i = 0; i < 10; i++)

printf("\n");

system("pause");

return 0;

}

選擇排序:

選擇排序較之氣泡排序來說,遍歷次數要少一些。它的主要思路是每一次遍歷選出陣列裡最小的乙個數,放在待排序陣列裡的起始位置,直到所有的待排序的資料排完,即選擇排序成功。

陣列arr[5]=;在這個陣列中,第一此遍歷:

1 5 3 9 7找到最小的數1,由於1在待排序陣列的起始位置,所以第一次遍歷不需要作出交換。

第二次遍歷:

1 5 3 9 7 找到待排序中最小的數字3,把它與第二個數進行交換,陣列變成1,3,5,9,7;

第三次遍歷:

1 3 5 9 7,找到數字5,它正好在第三個數字,所以不需要進行交換,陣列依然為1,3,5,9,7

第四此遍歷:

1 3 5 9 7,找到數字7,把它與第四個數字進行交換,陣列變成1,3,5,7,9

至此,選擇排序成功。

附上**:

void select_sort(int* arr, int num)	}}

int main()

; int num = sizeof(arr) / sizeof(arr[0]);

select_sort(arr, num);

for (int i = 0; i < num; i++)

printf("%d ",arr[i]);

printf("\n");

system("pause");

return 0;

}

二分查詢

假設陣列arr,待查詢的資料為key,定義兩個變數 left和right,arr[left]和arr[right]分別代表陣列第乙個元素和最後乙個元素。

從陣列的中間元素arr[mid]開始,如果key==arr[mid],就說明 找到了待查詢的那個數;

如果key

如果key>arr[mid],同理,下一次查詢的範圍變為arr[mid]~arr[right];

優點:比較次數少,占用系統記憶體少。

缺點:要求待查表為有序表,且插入刪除比較困難。不適用於經常變動,頻繁查詢的有序數列。

下面附上**:

bool bin_search(int arr, int data)

} else

return 0;

}int main()

; int data = 9;

bin_search(arr, data);

printf("yes\n");

system("pause");

return 0;

}

以上**執行環境皆為vs 2013.

氣泡排序,快速排序,選擇排序,二分查詢

氣泡排序原理 每一趟只能將乙個數歸位,如果有n個數進行排序,只需將n 1個數歸位,也就是說要進行n 1趟操作 已經歸位的數不用再比較 每一次都是得到比較列表中最大的數。氣泡排序演算法及其優化 氣泡排序的基本特徵是只能交換相鄰的元素。從下邊界開始,一趟掃瞄下來,可以把當前最大值頂到上邊界 如果沒有發生...

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

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

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

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