簡體   English   中英

排序 Arrays C++

[英]Sorting Arrays C++

C++ 書中的代碼摘錄顯示如何對 Arrays 進行排序:

void sort(int array[], int size)
{
    for(int i= 0; i < size; i++)
    {
        int index = findSmallestRemainingElement(array, size, i);
        swap(array,i,index);
    }
}
int findSmallestRemainingElement(int array[], int size, int index)
{
    int index_of_smallest_value = index;
    for (int i = index + 1; i < size; i++)

    {
        if (array[i] < array[index_of_smallest_value])
        {
            index_of_smallest_value= i;
        }
    }
    return index_of_smallest_value;
}
void swap(int array[], int first_index, int second_index)
{
    int temp=array[first_index];
    array[first_index] = array[second_index];
    array[second_index] = temp;
}

這本書並沒有很好地解釋這部分,所以我留下了一些關於函數的問題。

數組的大小和索引有什么區別?

這個問題的答案可能會幫助我更多地理解這些功能,但萬一它沒有......

findSmallestRemainingElement(int array[], int size, int index) function 和void swap(int array[], int first_index, int second_index)函數究竟是如何工作的?

顯然我知道每個 function 的總體用途,我只是不明白它的每一行以及代碼所做的不同事情。

感謝任何花時間幫助我理解這一點的人!

數組的大小和索引有什么區別?

Arrays 是通過指定元素的數量來聲明的,或者元素的數量可以從數組聲明中使用的初始化器的數量來確定。

例如

int a1[10];

數組a1聲明有10元素。

或者

int a2[] = { 1, 2, 3, 4, 5 };

數組a25元素聲明。

在函數的上下文中,數組的大小是數組中元素的數量。

所以 function 排序聲明如下

void sort(int array[], int size);

可以稱為

sort( a1, 10 );

或者

sort( a2, 5 );

如果您只想對數組的一部分進行排序,則可以指定比實際大小更少的元素數量。

要訪問數組的元素,您可以使用 subscipt 運算符。 例如,對於數組a2的 output 元素,您可以編寫

for ( int i = 0; i < 5; i++ )
{
    std::cout << a[i] << ' ';
}
std::cout << '\n';

所以i在循環中使用的變量放置了索引的作用來訪問數組的具體元素。

findSmallestRemainingElement(int array[], int size, int index) function 和 void swap(int array[], int first_index, int second_index) 函數究竟是如何工作的?

例如 function swap聲明如下

void swap(int array[], int first_index, int second_index);

用於交換數組的兩個元素的值。

例如,如果你想交換上面顯示的數組a2的第一個和最后一個元素,那么你可以調用 function

swap( a2, 0, 4 );

除了數組本身之外,將目標元素的兩個索引傳遞給 function。

function 定義可以看起來像

void swap(int array[], int first_index, int second_index)
{
    int temp = array[first_index];
    array[first_index] = array[second_index];
    array[second_index] = temp;
}

至於 function sort本身,則它使用選擇排序方法。 它基於找到數組中最小元素的索引,並將第一個元素的值與最小元素的值交換。 然后對數組的第二個元素執行相同的操作,依此類推。

數組的大小和索引有什么區別?

數組的大小是其中元素的數量。 雖然需要注意的是,在 C++ 中,這也可以指數組使用的字節數,這就是為什么更常用術語“長度”的原因,但這里不是這種情況。

您似乎認為索引是數組的屬性,但事實並非如此。 數組的索引是其元素從左到右的順序編號。 因此, a[0]是第 0 個元素(“索引 0 處的元素”), a[1]是第一個元素(索引 1),等等。

這個問題的答案可能會幫助我更多地理解這些功能,但萬一它沒有......

它可能會,所以我將把它留在那里。

暫無
暫無

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

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