<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    c 語言選擇排序


    發現錯別字 1年前 提問
    回答
    1
    瀏覽
    9445
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    安全集成(專業級)SI/PL CISAW安全運維(專業級)

    C語言的選擇排序算法的基本思想就是依次選出數組最小的數放到數組的前面,在C語言中我們可以使用兩個for循環,先從數組的第二個元素開始往后遍歷,找出最小的數放到第一個位置,再從剩下數組中找出最小的數放到第二個位置,以此類推,直到數組有序。先判斷最小的數的下標是不是 0,如果不是則說明最小的數不是第一個元素,則將這個數與第一個元素互換位置,這樣一輪下來最小的那個數就被找到并放到了最左邊。

    C語言選擇排序實現代碼如下:

    void print(int a[], int n ,int i){
    cout<<"第"<<i+1 <<"趟 : ";
    for(int j= 0; j<8; j++){
    cout<<a[j] <<"  ";
      }
    cout<<endl;
    }
    /**
     * 數組的最小值
     *
     * @return int 數組的鍵值
     */
    int SelectMinKey(int a[], int n, int i)
    {
    int k = i;
    for(int j=i+1 ;j< n; ++j) {
    if(a[k] > a[j]) k = j;
      }
    return k;
    }
    
    /**
     * 選擇排序
     *
     */
    void selectSort(int a[], int n){
    int key, tmp;
    for(int i = 0; i< n; ++i) {
        key = SelectMinKey(a, n,i);           //選擇最小的元素
    if(key != i){
          tmp = a[i];  a[i] = a[key]; a[key] = tmp; //最小元素與第i位置元素互換
        }
        print(a,  n , i);
      }
    }
    int main(){
    int a[8] = {3,1,5,7,2,4,9,6};
    cout<<"初始值:";
    for(int j= 0; j<8; j++){
    cout<<a[j] <<"  ";
      }
    cout<<endl<<endl;
      selectSort(a, 8);
      print(a,8,8);
    }

    回答所涉及的環境:聯想天逸510S、Windows 10。

    1年前 / 評論
    亚洲 欧美 自拍 唯美 另类