Задача: Сортировка выбором, общий подход
Исходник: сортировка выбором, язык: C++ [code #594, hits: 13124]
автор: - [добавлен: 01.08.2009]
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. int vibor (int in[], int n);
  5.  
  6. void main ()
  7. {
  8. int m=0;
  9. int s;
  10. int vvh [100];
  11. //Ввод массива
  12. char f [80];
  13. printf("\nvvedite chislo elementov v massive: ", f);
  14. scanf ("%d", &m); //Узнаем размер массива
  15. printf("\n vvedite cherez probel celie chisla:", f);
  16. for (int j=0; j<m; j++) scanf ("%d", &vvh[j]); //Заполнение массива
  17.  
  18. printf ("\n");
  19. s = vibor (vvh, m); //Сортировка методом выбора
  20. printf("sravneniy", f);
  21. printf ("%d", s);
  22.  
  23. getch();
  24. }
  25.  
  26. int vibor (int in[], int n)
  27. {
  28. int sravnen=0; //Характеристика трудоемкости (число стравнений)
  29. //Вывод сообщений
  30. char f [80];
  31. printf("\nsortirovka metodom vibora:\n", f);
  32. //Начало сортировки
  33. int i;
  34. for (i=0; i<n-1; i++) //n-1 раз ищем наименьший элемент
  35. {
  36. int imin=i; //принимаем за наименьший первый из рассматриваемых элементов
  37. //Поиск минимального элемента
  38. for (int j= i + 1; j<n; j++)
  39. {
  40. if (in[j]<in[imin]) imin = j;
  41. sravnen++;
  42. }
  43. int a = in[i]; in[i]=in[imin]; in[imin]=a; //Обмен элементов
  44. }
  45.  
  46. //Вывод результатов работы программы
  47. for (i=0; i<n; i++) printf ("%d ", in[i]);
  48. printf ("\n");
  49.  
  50. return sravnen; //Возвращаем число сравнений
  51. }
Сортировка выбором. Выбирается минимальный элемент в массиве, переносится в выходной массив на очередную позицию. Во входном массиве все элементы от следующего за текущим до конца сдвигаются на один влево.

+добавить реализацию