原文: https://beginnersbook.com/2015/02/insertion-sort-program-in-c/

插入排序算法逐个选择元素,并将其放置在元素有序列表中的所在位置。在下面的 C 程序中,我们实现了相同的逻辑。

在完成程序之前,让我们看一下示例帮助下的插入排序步骤。

  • 输入元素:89 17 8 12 0
  • 步骤 1: 89 17 8 12 0(粗体元素是有序列表,非粗体是无序列表)
  • 步骤 2: 17 89 8 12 0(每个元素将从无序列表中删除并放置在有序列表中的正确位置)
  • 步骤 3: 8 17 89 12 0
  • 步骤 4: 8 12 17 89 0
  • 步骤 5: 0 8 12 17 89

C 程序 - 插入排序实现

  1. #include<stdio.h>
  2. int main(){
  3. /* Here i & j for loop counters, temp for swapping,
  4. * count for total number of elements, number[] to
  5. * store the input numbers in array. You can increase
  6. * or decrease the size of number array as per requirement
  7. */
  8. int i, j, count, temp, number[25];
  9. printf("How many numbers u are going to enter?: ");
  10. scanf("%d",&count);
  11. printf("Enter %d elements: ", count);
  12. // This loop would store the input numbers in array
  13. for(i=0;i<count;i++)
  14. scanf("%d",&number[i]);
  15. // Implementation of insertion sort algorithm
  16. for(i=1;i<count;i++){
  17. temp=number[i];
  18. j=i-1;
  19. while((temp<number[j])&&(j>=0)){
  20. number[j+1]=number[j];
  21. j=j-1;
  22. }
  23. number[j+1]=temp;
  24. }
  25. printf("Order of Sorted elements: ");
  26. for(i=0;i<count;i++)
  27. printf(" %d",number[i]);
  28. return 0;
  29. }

输出:

C 中的插入排序程序 - 图1

正如您可以在输出中观察到的那样,我们以随机顺序输入了 6 个整数,并且上面的 C 程序通过使用插入排序算法的逻辑以升序对它们进行排序。