華為路由 H6 將於 4 月 27 日 10:08 預售,5 月末正式開售
阿新 • • 發佈:2021-04-26
//交換元素 void swap(int arr[],int i, int j){ arr[i] = arr[i]+arr[j]; arr[j] = arr[i] - arr[j]; arr[i] = arr[i]- arr[j]; } /* 選擇排序(Selection sort)是一種簡單直觀的排序演算法。 它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素, 存放在序列的起始位置,直到全部待排序的資料元素排完。 選擇排序是不穩定的排序方法(比如序列[5, 5, 3] 第一次就將第一個[5]與[3]交換,導致第一個5挪動到第二個5後面) */ //選擇排序(從無序區選擇一個元素進行比找最小元素,然後直接放在有序區) void selectSort(int *arr,int length) { for (int i = 0; i < length - 1; i++) { /* 把陣列看成兩個區,有序區和無序區 初始狀態有序區為空,無序區全部元素 然後從無序區找最小元素,放在有序區。 假設第0個元素看作最小的元素,然後和剩餘的元素比較 如果在剩餘的元素中有更小的則標記下標,直至找到最小的元素 然後如果標記的下標和開始下標不同則交換元素。 不斷的找尋最小的元素,直到元素被找完 第一小、第二小、第三小,。。。。 */ int min = i; //在剩餘的元素中找到最小的元素 for (int j = i + 1; j < length; j++) { if (arr[j] < arr[min]) { min = j; } } //進行交換,如果min發生變化,則進行交換 if (min != i) { swap(arr,min,i); } } }
轉載於:https://my.oschina.net/hehuiqi/blog/1592730