首頁  >  文章  >  系統教程  >  用蠻力法解決選擇排序問題

用蠻力法解決選擇排序問題

WBOY
WBOY轉載
2024-02-18 09:27:11820瀏覽

用蠻力法解決選擇排序問題

蠻力法是一種簡單直接解決問題的方法,常常直接基於問題的描述和所涉及的概念定義。

選擇排序思想:

#在選擇排序開始的時候,掃描整個列表,找到最小元素,然後和第一個元素交換,將最小元素放到它在有序列表的最終位置上。然後我們從第二個元素開始掃描列表,找到最後(n-1)的元素的最小值,再和第二個元素交換,把第二小的元素放在它在列表中的最終位置上。一般來說,在對列表做第i 遍掃描的時候,(i的值從0~n-2),該演算法再最後(n-i)個元素中尋找最小元素,然後拿它和Ai交換,在( n-1)遍之後,該清單就排好序了。

以下是我的程式碼實作:C
#include 
using namespace std;
int main()
{
    int i,j,temp,minn,N;
    cin>>N;
    int *Arr=new int[N];
    for(i=0;i<n cin>>Arr[i];
 
    for(i=0;iArr[j])
                minn=j;//记录最小值的下标
        }
        temp=Arr[minn];     //交换Arr[minn]和Arr[i]。
        Arr[minn]=Arr[i];
        Arr[i]=temp;
    }
 
    for(i=0;i<n cout return>
<div style="margin-top: 2em; margin-bottom: 1em;"><span style="color: #1e1e1e; letter-spacing: 2px; border-left: #FF3030 3px solid; border-right: #FF3030 3px solid; padding-left: 8px; padding-right: 8px; font-size: 12pt;"><strong>演算法分析:</strong></span></div>
<p>輸入的規模是由元素的個數n決定的,基本操作是鍵值比較 Arr[minn]>Arr[j]。這個比較的執行次數只依賴陣列的規模,</p>
<p>C(n)=∑[i=0,i=N-2] ∑[j=i 1,j=N-1]=∑[i=0,i=N-2] ((N- 1)-(i 1) 1))=∑[i=0,i=N-2](N-i-1)=(n-1)*n/2</p>
<p>即對於任何輸入來說,選擇排序都是一個時間複雜度為Θ(n2)的演算法。鍵的交換次數是Θ(n) <i>這使得選擇排序效能較優。 </i></p></n></n>

以上是用蠻力法解決選擇排序問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:linuxprobe.com。如有侵權,請聯絡admin@php.cn刪除