簡體   English   中英

選擇排序以找到未排序數組中的最大數

[英]Selection sort to find the largest number in an unsorted array

我正在嘗試對數組進行排序以找到最大的數字並將其移至末尾並與那里的當前元素交換。 我實際上做錯了什么? 我試圖觀看這方面的視頻,但所有這些視頻都只是對數組進行排序以找到最小的元素。

#include <iostream>
using namespace std;
int main(){
    int const LENGTH = 10;
    int myList[LENGTH] = {2, 56, 34, 25, 73, 46, 89,10, 5, 16};
    int i, x, max, temp;
    for(i=0; i< 10;i++)
    {
        int max = i;
        for(int j=i+1; j <10; j++)
        {
            if(myList[max] < myList[j])
            {
                max = j;
            }
        }
        temp = myList[max];
        myList[max] = myList[i];
        myList[i] = temp;
        for(x=0;x<10;x++)
        {
            cout << myList[x] << " ";
        }
        cout << endl;
    }
    return 0;
}

出於某種原因,我的代碼輸出了這個,它很好但它倒退了

89 56 34 25 73 46 2 10 5 16
89 73 34 25 56 46 2 10 5 16
89 73 56 25 34 46 2 10 5 16
89 73 56 46 34 25 2 10 5 16
89 73 56 46 34 25 2 10 5 16
89 73 56 46 34 25 2 10 5 16
89 73 56 46 34 25 16 10 5 2
89 73 56 46 34 25 16 10 5 2
89 73 56 46 34 25 16 10 5 2
89 73 56 46 34 25 16 10 5 2

當您研究排序算法時,它們通常從廣義排序的概念開始。 以升序或降序對數字進行排序只是一種可能的排序方式。 因此,例如std::sort()將 function 作為參數。 function 只需要兩個元素並告訴算法第一個元素是否應該在第二個之前出現。 查看相應的文檔,但請記住,它需要非常仔細地閱讀,因為通常事情只是暗示。

現在,在您的情況下,排序 function 只是用於比較元素的小於運算符 ( < )。 最后,它會導致每個元素 N+1 小於元素 N。如果您使用不同的運算符,您將相應地更改順序,因此只需使用大於運算符來切換順序。

for (i = LENGTH-1; i >= 0; i--)    
   for (int j = i ; j >= 0; j--)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM