Метод сортировки - метод вставок, класс - строка символов


Добавил:DMT
Дата создания:23 апреля 2008, 23:23
Дата обновления:23 апреля 2008, 23:25
Просмотров:4335 последний сегодня, 10:54
Комментариев: 1
Метод сортировки - метод вставок, класс - строка символов
Код на C++
  1. #include <iostream.h>
  2. #include <string.h>
  3. #include <conio.h>
  4. #include <stdlib.h>
  5.  
  6. // Класс - строка символов
  7. class SymStr
  8. {
  9. private:
  10. char *s; // Строка
  11. int length; // Длина строки
  12. public:
  13. // Конструкторы
  14. SymStr()
  15. {
  16. s=new char[1];
  17. *s='\0';
  18. length=0;
  19. }
  20.  
  21. SymStr(char *str)
  22. {
  23. length = strlen(str);
  24. s = new char[length + 1];
  25. strcpy (s, str);
  26. }
  27.  
  28. SymStr(const SymStr &str)
  29. {
  30. length = str.length;
  31. s = new char[length + 1];
  32. strcpy (s, str.s);
  33. }
  34.  
  35. // Деструктор
  36. ~SymStr() { delete s; }
  37.  
  38. // Перегрузка оператора >
  39. int operator> (SymStr &);
  40. // Перегрузка оператора >=
  41. int operator>=(SymStr &);
  42. // Перегрузка оператора <
  43. int operator< (SymStr &);
  44. // Перегрузка оператора <=
  45. int operator<=(SymStr &);
  46. // Перегрузка оператора ==
  47. int operator==(SymStr &);
  48. // Перегрузка оператора =
  49. SymStr &operator=(SymStr &Object);
  50.  
  51. // Перегрузка оператора << для вывода строки
  52. friend ostream &operator<<(ostream &, SymStr &);
  53. };
  54.  
  55. // Перегрузка оператора >
  56. int SymStr::operator> (SymStr &Object)
  57. {
  58. if(strcmp(s, Object.s) > 0) return 1;
  59. return 0;
  60. }
  61.  
  62. // Перегрузка оператора >=
  63. int SymStr::operator>=(SymStr &Object)
  64. {
  65. if(strcmp(s, Object.s) >= 0) return 1;
  66. return 0;
  67. }
  68. // Перегрузка оператора <
  69. int SymStr::operator< (SymStr &Object)
  70. {
  71. if(strcmp(s, Object.s) < 0) return 1;
  72. return 0;
  73. }
  74.  
  75. // Перегрузка оператора <=
  76. int SymStr::operator<=(SymStr &Object)
  77. {
  78. if(strcmp(s, Object.s) <= 0) return 1;
  79. return 0;
  80. }
  81.  
  82. // Перегрузка оператора ==
  83. int SymStr::operator==(SymStr &Object)
  84. {
  85. if(strcmp(s, Object.s) == 0) return 1;
  86. return 0;
  87. }
  88.  
  89. // Перегрузка оператора =
  90. SymStr& SymStr::operator=(SymStr &Object)
  91. {
  92. length = strlen(Object.s);
  93. s = new char[length + 1];
  94. strcpy(s, Object.s);
  95. return *this;
  96. }
  97.  
  98. // Перегрузка оператора << для вывода строки
  99. ostream &operator<<(ostream &fo, SymStr &fp)
  100. {
  101. fo << fp.s;
  102. return fo;
  103. }
  104.  
  105. // Cортировка вставками
  106. template <class Type>
  107. void insert (Type *x, int n)
  108. {
  109. int i, j;
  110. Type t;
  111. for (i = 1; i < n; i++)
  112. {
  113. t = x[i];
  114. for (j = i - 1; j >= 0 && t < x[j]; j--)
  115. x[j + 1] = x[j]; // Сдвиг на одну позицию
  116. x[j + 1] = t;
  117. }
  118. }
  119.  
  120. void main()
  121. {
  122. int i;
  123. int mas1[30]; // Определяем целочисленный массив
  124. float mas2[30]; // Определяем массив чисел с плавающей точкой
  125. randomize(); // Инициализация генератора случайных чисел
  126.  
  127. // Заполняем массивы случайными числами
  128. for (i = 0; i < 30; i++)
  129. {
  130. mas1[i] = random(30);
  131. mas2[i] = random(30) * 0.01;
  132. }
  133.  
  134. clrscr(); // Очищаем экран
  135. cout << "\t\t\tСортировка методом вставок\n\n";
  136. // Сортировка целых чисел
  137. insert(mas1, 30);
  138. cout << "Результат сортировки целых чисел:\n";
  139. for (i = 0; i < 30; i++)
  140. cout << mas1[i] << " ";
  141. // Cортировка чисел с плавающей точкой
  142. insert(mas2, 30);
  143. cout << "\n\nРезультат сортировки чисел с плавающей точкой:\n";
  144. for (i = 0; i < 30; i++)
  145. cout << mas2[i] << " ";
  146.  
  147. SymStr mas3[5] = {"diman", "max", "vasyan", "sanya", "leha"};
  148. // Cортировка символьных строк
  149. insert(mas3, 5);
  150. cout << "\n\nРезультат сортировки битовых строк:\n";
  151. for (i = 0; i < 5; i++)
  152. cout << mas3[i] << " ";
  153. getch();
  154. }
При использовании обязательна ссылка на http://DMTSoft.ru
Результаты работы программы
Сортировка методом вставок
Результат сортировки целых чисел:
0 0 1 2 3 4 6 7 8 8 8 9 10 11 12 12 13 13 14 15 16 19 20 21 22 26 27 28 28 29

Результат сортировки чисел с плавающей точкой:
0 0.01 0.03 0.03 0.05 0.06 0.06 0.07 0.08 0.09 0.09 0.1 0.12 0.13 0.14 0.14 0.15 0.15 0.16 0.16 0.18 0.19 0.19 0.2 0.2 0.22 0.26 0.27 0.27 0.29
up

Комментарии для "Метод сортировки - метод вставок, класс - строка символов"


Пользователь: sergeyzuzic
Сообщений: 6
Статус: Незримый
Зарегистрирован:
7 апреля 2010, 3:51
Был:10 октября 2017, 3:06
sergeyzuzic
smsup
Дата: 1 июня 2010, 4:42 Сообщение № 1
Самый простой метод сортировки это пузырьковый с 2 циклами :)