int main()
; int length = 9;
for(int i=0;iw[j])
}for (int i = 0; i < length; i++)
cout << w[i] << " ";
return 0;
}
此種方法,每次排序,都可能將較小的數排序到後邊去,造成重複操作。使用從後往前的比較,比較j和j+1不變動後邊的數,迴圈一次,就講小的數排在最前邊
int main()
; int length = 9;
for (int i = 0; i < length - 1; i++)
for (int j = length-2; j >= i; j--)
}for (int i = 0; i < length; i++)
cout << w[i] << " ";
return 0;
}
還有一種情況,即當待排序的數序列為的時候,排序一次就能夠得到得到結果。故增加乙個標誌位,當第二次查詢,發現沒有交換的時候,即後續的數,已經是正確的順序,所以結束迴圈。有了標誌位,對於已經排序好的數,確定是否排序成功,時間複雜度是(n-1)
int main()
;//數的此種序列是最壞情況
double w[9] = ;
int length = 9;
bool flag=true;
int ans = 0;
for (int i = 0; (i < length - 1) && flag; i++)
}}
for (int i = 0; i < length; i++)
cout << w[i] << " ";
cout 《簡單選擇排序,每次排序之前,從後邊的數中選擇出最小的數,然後與最前邊交換。此方法,由於每次選擇了最小的書,所以極大的減少了交換次數。
int main()
; //double w[9] = ;
int length = 9;
int min;
for (int i = 0; iw[j])
min = j;
} if (min != i)
}for (int i = 0; i < length; i++)
cout << w[i] << " ";
return 0;
}
氣泡排序 氣泡排序法
冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...
氣泡排序法及簡單優化
鞏固自己學習,方便新手,把自己學習的寫出來,有錯誤的敬請指出。氣泡排序法我理解的三點 外迴圈 迴圈變數i,可以理解為對i位置排序。內迴圈 針對i位置,通過內迴圈,把大的數放在i位置。變數change 如果內迴圈不把change置為1說明排序已經結束。具體 如下 有注釋 include int mai...
排序 氣泡排序法
氣泡排序法,是最簡單的一種排序方法,從第乙個位置開始與相鄰位置比較,判斷是否需要交換位子。第一趟從第乙個位置開始,直到最後乙個位置,a n 1 確定最大 以公升序為例子 的數放在最後一位,a n 1 第二趟,繼續從第乙個位置開始,倒數第二位,a n 2 確定倒數第二大的數在倒數第二位a n 2 演算...