我想在C++中實現選擇排序。我不知道我在這段代碼中做了什麼錯誤,但結果沒有正確排序。 請讓我知道我做錯了什麼。感謝您的幫助。選擇排序輸出不正確
輸出結果: 23 31 4 89 2 8 10 11
#include <iostream>
using namespace std;
void printElement(int arr[],int size)
{
for(int i = 0; i < size; i++)
cout << arr[i] << " ";
}
// arr[] = {31, 23, 4, 89, 2, 8, 10, 11}
void selectionSort(int arr[], int size)
{
int i, j, min, min_id, tmp;
for(i = 0; i < size-1; i++){
min = arr[i];
for(int j = i + 1; j < size; j++){
if (arr[j] < min){
min = arr[j];
min_id = j;
}
tmp = arr[i]; //tmp = min; - this is wrong by msl
arr[i] = arr[min_id]; //min = arr[min_id]; this is wrong by msl
arr[min_id] = tmp;
}
printElement(arr, size);
cout << endl;
}
}
int main()
{
int size = 8;
int arr[] = {31, 23, 4, 89, 2, 8, 10, 11};
selectionSort(arr, size);
printElement(arr, size);
system("PAUSE");
return 0;
}
嗨。要求人們發現代碼中的錯誤並不是特別有效。您應該使用調試器(或者添加打印語句)來分析問題,追蹤程序的進度,並將其與預期發生的情況進行比較。只要兩者發生分歧,那麼你就發現了你的問題。 (然後,如果有必要,您應該構建一個[最小測試用例](http://sscce.org)。) –
瞭解如何使用調試器。你不可能總是能夠將你的代碼轉儲到另一個人的膝上,並要求「告訴我什麼是錯的」,他們並不總是能夠並願意回答。 – Jon
從它的外觀來看,每次你設置'min',你都想設置'min_id',但是你不想。 –