גיל אורח
הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 07 December 2008 בשעה 16:21 | | IP רשוּם
|
|
|
|
היי
אני מחפש דרך לממש radix sort
בצורה לא רקוסיבית...(בc++)
אין לי מושג מאיפה להתחיל
אשמח אם מישהו יוכל לעזור לי או להפנות אותי לקוד כלשהו שאני יוכל להבין
תודה
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 08 December 2008 בשעה 21:33 | | IP רשוּם
|
|
|
|
נועם/גיל, למה סתם להיות מעצבן ?
זה מאוד פשוט, ע"י שימוש ב-x תורים כאשר x הוא בסיס הספירה שעל פיו מחלקים.
מדביק מויקיפדיה למקרה שלא הבנת.
simple version of an LSD radix sort can be achieved using queues as buckets. The following process is repeated for a number of times equal to the length of the longest key:
- The integers are enqueued into an array of ten separate queues
based on their digits from right to left. Computers often represent
integers internally as fixed-length binary digits. Here, we will do
something analogous with fixed-length decimal digits. So, using the
numbers from the previous example, the queues for the 1st pass would
be:
- 0: 170, 090
- 1: none
- 2: 002, 802
- 3: none
- 4: 024
- 5: 045, 075
- 6: 066
- 7 - 9: none
- The queues are dequeued back into an array of integers, in
increasing order. Using the same numbers, the array will look like this
after the 1st pass:
- 170, 090, 002, 802, 024, 045, 075, 066
- For the second pass:
- Queues:
- 0: 002, 802
- 1: none
- 2: 024
- 3: none
- 4: 045
- 5: none
- 6: 066
- 7: 170, 075
- 8: none
- 9: 090
- Array:
- 002, 802, 024, 045, 066, 170, 075, 090
(note that at this point only 802 and 170 are out of order)
- For the third pass:
- Queues:
- 0: 002, 024, 045, 066, 075, 090
- 1: 170
- 2 - 7: none
- 8: 802
- 9: none
- Array:
- 002, 024, 045, 066, 075, 090, 170, 802 (sorted)
While this may not be the most efficient radix sort algorithm, it is relatively simple, and still quite efficient.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|