程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 選擇排序

選擇排序

編輯:關於C語言
 

選擇排序是一種簡單直觀的排序算法,它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩余未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。

選擇排序的主要優點與數據移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有一個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。選擇排序的時間復雜度也為O(n^2)。

代碼實現

#include <iostream>
using namespace std;

void SelectSort(int arr[], int length)
{
     int temp, min;
     for (int i = 0; i < length - 1; ++i)
     {
          min = i;

          // 尋找最小值
          for (int j = i + 1; j < length; ++j)
          {
               if (arr[j] < arr[min])
                    min = j;
          }

          // 交換
          if (min != i)
          {
               temp = arr[i];
               arr[i] = arr[min];
               arr[min] =temp;
          }
     }
}

int main()
{
     int arr[10] = {2, 4, 1, 0, 8, 4, 8, 9, 20, 7};

     SelectSort(arr, sizeof(arr) / sizeof(arr[0]));

     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i)
     {
          cout<<arr[i]<<" ";
     }
     cout<<endl;

     return 0;
}
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved