首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C 語言選擇排序錯誤修正:迴圈條件與交換邏輯

     編輯:C 語言問答

原始碼 for(j=i+1; in; j++) 條件判斷錯誤,導致無限迴圈。正確寫法:

修正後的選擇排序

void selectionSort(int arr[], int n)
{
    for (int i = 0; i < n - 1; i++)
    {
        int minIdx = i;
        for (int j = i + 1; j < n; j++)        // 修正:j < n
        {
            if (arr[j] < arr[minIdx])
                minIdx = j;
        }
        if (minIdx != i)                         // 僅在找到較小值時交換
        {
            int temp = arr[i];
            arr[i] = arr[minIdx];
            arr[minIdx] = temp;
        }
    }
}

關鍵修正點

  • 內層迴圈條件 j < n,非 in。
  • 交換邏輯置於 if (minIdx != i) 內,避免不必要的自我交換。
  • 時間複雜度 O(n²),適合小規模資料教學示範。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved