📜  插入排序的C程序(1)

📅  最后修改于: 2023-12-03 15:39:51.726000             🧑  作者: Mango

插入排序的C程序介绍

插入排序是一种简单的排序算法,它的基本思想是将一个待排序的序列分成一个有序段和一个无序段,每次将无序段的第一个元素插入到有序段的合适位置,直到无序段为空,整个序列就变成了有序的。

下面是插入排序的C程序实现,包括从小到大和从大到小两种排序方式。

实现代码
void insertion_sort_asc(int arr[], int n) {
    int i, j, temp;
    for (i = 1; i < n; i++) {
        temp = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > temp) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}

void insertion_sort_desc(int arr[], int n) {
    int i, j, temp;
    for (i = 1; i < n; i++) {
        temp = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] < temp) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}
函数说明
函数名

插入排序包含两个函数:insertion_sort_asc和insertion_sort_desc。

参数说明
  • arr:要排序的数组;
  • n:数组的元素个数。
返回值说明

排序后的数组直接存在传入的数组中,没有返回值。

使用方法

调用函数前,需要先定义一个数组,然后把数组和数组元素个数作为参数传入排序函数中即可。

int main() {
    int arr[] = {3, 1, 4, 2, 5};
    int n = sizeof(arr) / sizeof(int);
    insertion_sort_asc(arr, n);
    // insertion_sort_desc(arr, n); 从大到小排序
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}
性能分析

插入排序算法的时间复杂度为O(n^2)。该算法在处理少量数据时效率比较高,但成本增长较快,排序大量数据时效率较低,不适合处理大规模数据。在处理大规模数据时,可以考虑使用快速排序、归并排序等高效的排序算法来提高效率。

markdown片段:

# 插入排序的C程序介绍

插入排序是一种简单的排序算法,它的基本思想是将一个待排序的序列分成一个有序段和一个无序段,每次将无序段的第一个元素插入到有序段的合适位置,直到无序段为空,整个序列就变成了有序的。

下面是插入排序的C程序实现,包括从小到大和从大到小两种排序方式。

## 实现代码

```c
void insertion_sort_asc(int arr[], int n) {
    int i, j, temp;
    for (i = 1; i < n; i++) {
        temp = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] > temp) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}

void insertion_sort_desc(int arr[], int n) {
    int i, j, temp;
    for (i = 1; i < n; i++) {
        temp = arr[i];
        j = i - 1;
        while (j >= 0 && arr[j] < temp) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = temp;
    }
}
函数说明
函数名

插入排序包含两个函数:insertion_sort_asc和insertion_sort_desc。

参数说明
  • arr:要排序的数组;
  • n:数组的元素个数。
返回值说明

排序后的数组直接存在传入的数组中,没有返回值。

使用方法

调用函数前,需要先定义一个数组,然后把数组和数组元素个数作为参数传入排序函数中即可。

int main() {
    int arr[] = {3, 1, 4, 2, 5};
    int n = sizeof(arr) / sizeof(int);
    insertion_sort_asc(arr, n);
    // insertion_sort_desc(arr, n); 从大到小排序
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}
性能分析

插入排序算法的时间复杂度为O(n^2)。该算法在处理少量数据时效率比较高,但成本增长较快,排序大量数据时效率较低,不适合处理大规模数据。在处理大规模数据时,可以考虑使用快速排序、归并排序等高效的排序算法来提高效率。