[英]Sorting Arrays C++
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 };
數組a2
用5
元素聲明。
在函數的上下文中,數組的大小是數組中元素的數量。
所以 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.