想象一下,您有十個具有十進制值的不同變量,您必須將它們從最低排序到最高排序。我熟悉使用不同編程語言的不同排序算法,但在這種情況下,我必須在最終用戶應用程序中構建算法,以允許輸入一些特定結構:它允許使用「for」,「while」 ,「if」,但與數組無關,這意味着,它不能處理像[a]這樣的數組,其中「a」是一個數組。請,任何人都可以給我一個線索?非常感謝!無陣列排序
Q
無陣列排序
-1
A
回答
1
你的意思是這樣的?
C++代碼:
void sort_4(int *a1, int *a2, int *a3, int *a4)
{
if (a1 == NULL) return;
if (a2 == NULL) return;
if (*a2 < *a1) swap(*a1, *a2);
sort_5(a1, NULL, NULL, NULL);
if (a3 == NULL) return;
if (*a2 < *a3) swap(*a2, *a3);
sort_5(a1, a2, NULL, NULL);
if (a4 == NULL) return;
if (*a4 < *a3) swap(*a3, *a4);
sort_5(a1, a2, a3, NULL);
}
您可以將其擴展到10個元素通過複製和粘貼或通過代碼生成腳本。
+0
謝謝@Ke Yang,但在這種情況下,我無法以遞歸方式調用方法。 – chufabit
+0
那麼你可能需要使用大量的代碼來實現排序。例如,使用冒泡排序比較10個元素的約50倍。您可以編寫腳本來生成代碼。 –
0
那麼,你可以硬編碼一個冒泡排序。例如,假設你有10個變量,a, b, c, d, e, f, g, h, i, j
:
for (int x = 0; x < 9; ++x)
{
if (a > b) swap(a,b);
if (b > c) swap(b,c);
if (c > d) swap(c,d);
if (d > e) swap(d,e);
if (e > f) swap(e,f);
if (f > g) swap(f,g);
if (g > h) swap(g,h);
if (h > i) swap(h,i);
if (i > j) swap(i,j);
}
這不是非常有效的,但你不會注意到在只有10級左右的項目的UI應用程序的效率。你可以把它稍微更有效地通過嵌套條件語句:
if (x < 9)
{
if (a > b) swap(a,b);
if (x < 8)
{
if (b > c) swap(b,c);
if (x < 7)
{
....
但是,匆忙得笨拙,再小的效率,它可以讓你不會注意到這樣的小單子。
相關問題
- 1. 無法排序陣列
- 2. 排序陣列
- 3. 排序陣列
- 4. 排序陣列
- 5. 排序陣列
- 6. 排序陣列
- 7. 排序陣列
- 8. 排序陣列
- 9. 排序陣列
- 10. 排序陣列
- 11. 排序陣列
- 12. 排序陣列
- 13. 排序陣列無法正常工作
- 14. 排序無限深度陣列 - PHP
- 15. 無法排序在ios中的陣列
- 16. ruby排序陣列
- 17. 雙排序陣列
- 18. Javascript排序陣列
- 19. iPhone排序陣列
- 20. 排序陣列AS3
- 21. Android陣列排序
- 22. 排序NsMutable陣列
- 23. Smarty排序陣列
- 24. PHP排序陣列
- 25. F#排序陣列
- 26. 排序子陣列
- 27. 排序陣列 - PHP
- 28. 排序蟒陣列
- 29. 排序陣列array.sort
- 30. 堆排序陣列
你的問題不清楚。首先,如果你不能在'a'上寫字,你不能在現場排序。您可以複製它,對其進行排序並返回該數組。或者,如果必須在給定輸入時查找最小/最大元素,請使用'heap' – vish4071
因此,您嘗試使用不支持數組的語言進行排序? –
這解決了你的問題http://stackoverflow.com/questions/25070577/sort-4-numbers-without-array。用你的號碼擴展4。 –