Lila25mila
Ақп. 26, 2019, 2:30 Т.Қ.

Кірістіруді сұрыптау алгоритмі

Это описание предназначено для того, чтобы понять, что такое алгоритм сортировки вставками и как его реализовать в программировании.


О технических деталях, свойствах и сравнении с другим алгоритмом сортировки речи здесь не пойдет. Если вы знаете, что такое алгоритм сортировки вставками, посетите эту страницу , чтобы узнать о свойствах сортировки вставок и сравнения с другими алгоритмами сортировки.

Как работает алгоритм сортировки вставок?

Пояснения по работе алгоритма:


Предположим, вы хотите отсортировать элементы по возрастанию, как показано на рисунке выше. Тогда выполняются следующие шаги:

  • Шаг 1: Второй элемент массива сравнивается с элементами, которые появляются перед ним (в данном случае только первый элемент). Если второй элемент меньше первого элемента, второй элемент вставляется в позицию первого элемента. После первого шага, первые два элемента массива будут отсортированы.
  • Шаг 2: Третий элемент массива сравнивается с элементами, которые появляются перед ним (первый и второй элемент). Если третий элемент меньше первого, он вставляется в позицию первого элемента. Если третий элемент больше первого элемента, но меньше второго элемента, он вставляется в позицию второго элемента. Если третий элемент больше, чем оба элемента, он остается в том же положении. После второго шага первые три элемента массива будут отсортированы.
  • Шаг 3: Аналогично, четвертый элемент массива сравнивается с элементами, которые появляются перед ним (первый, второй и третий элемент), и применяется та же процедура, и этот элемент вставляется в правильное положение. После третьего шага первые четыре элемента массива будут отсортированы.

Если есть n элементов для сортировки, то эта процедура повторяется n-1 раз, чтобы получился отсортированный список массивов.

Элементы сортировки программы C с использованием вставного алгоритма сортировки
  1. /*Сортировка элементов массива в порядке возрастания с использованием алгоритма сортировки вставками*/
  2. #include<stdio.h>
  3. int main()
  4. {
  5. int data[100],n,temp,i,j;
  6. printf("Enter number of terms(should be less than 100): ");
  7. scanf("%d",&n);
  8. printf("Enter elements: ");
  9. for(i=0;i<n;i++)
  10. {
  11. scanf("%d",&data[i]);
  12. }
  13. for(i=1;i<n;i++)
  14. {
  15. temp = data[i];
  16. j=i-1;
  17. while(temp<data[j] && j>=0)
  18. /*Чтобы отсортировать элементы в порядке убывания, измените temp <data [j] на temp> data [j] в строке выше.*/
  19. {
  20. data[j+1] = data[j];
  21. --j;
  22. }
  23. data[j+1]=temp;
  24. }
  25. printf("In ascending order: ");
  26. for(i=0; i<n; i++)
  27. printf("%d\t",data[i]);
  28. return 0;
  29. }

Примечание: хотя эта программа написана на языке C, алгоритм сортировки вставками можно аналогичным образом использовать и в других языках программирования.

Вывод на экран:

  1. Enter number of terms(should be less than 100): 5
  2. Enter elements: 12
  3. 1
  4. 2
  5. 5
  6. 3
  7. In ascending order: 1 2 3 5 12

Вот еще один исходный код, который использует ту же технику алгоритма сортировки вставки для сортировки элементов массива.

  1. / * Этот исходный код также является реализацией алгоритма сортировки вставками для сортировки элементов массива. * /
  2. / * Эта программа немного сложна, поскольку содержит несколько циклов. * /
  3. / * Программа для сортировки массива в порядке убывания * /
  4. #include <stdio.h>
  5. int main()
  6. {
  7. int data[100],n,i,j,hold,k;
  8. printf("Enter number of terms(should be less than 100): ");
  9. scanf("%d",&n);
  10. printf("Enter elements: ");
  11. for(i=0;i<=n-1;++i)
  12. {
  13. scanf("%d",&data[i]);
  14. }
  15. for(i=1;i<=n-1;++i)
  16. {
  17. for(j=0;j<i;++j)
  18. if(data[j]<data[i])
  19. / * Чтобы отсортировать элементы в порядке возрастания, измените <на> в строке выше. * /
  20. {
  21. hold=data[i];
  22. k=i;
  23. while(k!=j)
  24. {
  25. data[k]=data[k-1];
  26. --k;
  27. }
  28. data[j]=hold;
  29. }
  30. }
  31. printf("In descending Order: ");
  32. for(i=0;i<=n-1;++i)
  33. {
  34. printf("%d ",data[i]);
  35. }
  36. return 0;
  37. }

Мақала бойынша сұралады0сұрақтар(лар)

2

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

Пікірлер

Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
Кіріңіз немесе Тіркеліңіз