c编程序怎么排序

时间:2025-01-25 20:28:03 单机游戏

在C语言中,可以使用多种算法来实现排序,包括冒泡排序、选择排序、插入排序、归并排序和快速排序。以下是这些排序算法的简要介绍和C语言代码实现:

冒泡排序

原理:通过多次比较相邻的两个元素,并在必要时交换它们的位置来进行排序。

时间复杂度:O(n²)

代码实现:

```c

void BubbleSort(int *a, int n) {

int i, j, temp;

for (i = 0; i < n - 1; i++) {

for (j = 0; j < n - i - 1; j++) {

if (a[j] > a[j + 1]) {

temp = a[j];

a[j] = a[j + 1];

a[j + 1] = temp;

}

}

}

}

```

选择排序

原理:每次从未排序的部分中找到最小(或最大)的元素,将其放到已排序部分的末尾。

时间复杂度:O(n²)

代码实现:

```c

void SelectionSort(int *a, int n) {

int i, j, min_index;

for (i = 0; i < n - 1; i++) {

min_index = i;

for (j = i + 1; j < n; j++) {

if (a[j] < a[min_index]) {

min_index = j;

}

}

if (min_index != i) {

int temp = a[i];

a[i] = a[min_index];

a[min_index] = temp;

}

}

}

```

插入排序

原理:将第一个元素视为有序序列,将剩余元素逐个插入到有序序列中,保持有序性。

时间复杂度:O(n²)

代码实现:

```c

void InsertSort(int *a, int n) {

int i, j, key;

for (i = 1; i < n; i++) {

key = a[i];

j = i - 1;

while (j >= 0 && a[j] > key) {

a[j + 1] = a[j];

j--;

}

a[j + 1] = key;

}

}

```

归并排序

原理:采用分治策略,将序列分为两半,递归对两半进行排序,然后合并排序后的两半。

时间复杂度:O(n log n)

代码实现: