מעבר לתוכן

מבוא למחשב - שפת סי - שאלה קצרה


women

הודעות מומלצות

צריך למיין את התווים במחרוזת כאשר אסור למספר האיטרציות בלולאה להיות תלוי באורך הקלט, וכן אסור שמשתני עזר יהיו תלויים  באורך הקלט אלא קבועים מראש.

השיטה שבה משתמשים פה היא לעבוד תחת ההנחה שאם מדובר במחרוזת, אז היא מערך של chars שהטווח שלו הוא בסך הכל 0 עד 255 (בunsigned), או שבסך הכל יש לנו 256 תווים אפשריים.

המיון מתבצע באופן הבא: ראשית, מגדירים מערך באורך 256 (N) שהתא ה-i בו יכיל את מס' ההישנויות של תו מספר i במחרוזת.

שנית (המחרוזת הראשונה): עוברים פעם אחת על המחרוזת. לכל תו בה, מעלים ב-1 את המקום ה- s ddd במערך, וזה נכון כי בC התו הוא לא יותר מאשר מספר בין 0 ל-255 אז אפשר להשתמש בו כך או כך.

כעת יש לנו כבר את התווים שהיו נוכחים במחרוזת s המקורית, עם מספר החזרות של כל אחד מהם.

בלולאה השלישית, משתמשים במערך שיצרנו ודורסים את s באופן הבא: עוברים לפי הסדר על התאים במערך שיצרנו, ומדפיסים ב-s תו כמספר הפעמים שהוא מופיע (זו הלולאה הפנימית).

קישור לתוכן
שיתוף באתרים אחרים

הצטרפות לשיח

באפשרותך לשלוח הודעה כעת ולהירשם מאוחר יותר. אם ברשותך חשבון, ניתן להתחבר עכשיו לשליחת הודעה דרך חשבונך.
הערה: הודעתך דרושה לאישור הנהלה לפני הצגתה.

אורח
הוספת תגובה

×   הדבקה כטקסט עשיר.   הדבקה כטקסט רגיל במקום

  מאושרים אך ורק 75 סמייקונים.

×   הקישור שלך מוצמד אוטומטית.   הצגה כקישור במקום

×   תוכן הקודם שלכם שוחזר.   ניקוי עורך

×   You cannot paste images directly. Upload or insert images from URL.

טוען...
×
×
  • יצירת חדש...