提示信息

C语言插入排序的具体实现

竹影清风 已关注

插入排序是一种简单直观的排序算法,其工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。下面是插入排序在C语言中的具体实现:

  1. #include <stdio.h>
  2. void insertionSort(int arr[], int n) {
  3. for (int i = 1; i < n; i++) {
  4. int key = arr[i]; // 取出未排序序列中的第一个元素
  5. int j = i - 1;
  6. // 将已排序序列中大于key的元素向后移动一个位置
  7. while (j >= 0 && arr[j] > key) {
  8. arr[j + 1] = arr[j];
  9. j--;
  10. }
  11. arr[j + 1] = key; // 将key插入到正确位置
  12. }
  13. }
  14. void printArray(int arr[], int n) {
  15. for (int i = 0; i < n; i++)
  16. printf("%d ", arr[i]);
  17. printf("\n");
  18. }
  19. int main() {
  20. int arr[] = {12, 11, 13, 5, 6};
  21. int n = sizeof(arr) / sizeof(arr[0]);
  22. printf("Original array: \n");
  23. printArray(arr, n);
  24. insertionSort(arr, n);
  25. printf("Sorted array: \n");
  26. printArray(arr, n);
  27. return 0;
  28. }

代码说明:

  1. insertionSort函数

    • 通过循环遍历每一元素,从第二个元素开始。
    • 使用key来保存当前待插入的元素。
    • 内嵌的while循环将已经排序的序列中比key大的元素向后移动一位。
    • key放到正确的位置。
  2. printArray函数

    • 用于输出数组,每个元素后跟一个空格。
  3. main函数

    • 初始化一个数组并输出其原始顺序。
    • 调用insertionSort函数对数组进行排序。
    • 再次输出数组,显示排序后的结果。

这个实现展示了插入排序算法的基础构造,适合用于小规模数据集的排序任务。在大多数情况下,插入排序的时间复杂度为O(n^2)。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
竹影清风 关注 已关注

最近一次登录:2024-11-20 21:58:37   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图