c语言实现利用以下排序方法实现数组元素排列 1)冒泡法2)选择法 3)体会两者的区别
时间: 2023-12-03 20:44:27 浏览: 67
以下是使用 C 语言实现冒泡法和选择法排序的示例代码:
```c
#include <stdio.h>
// 冒泡法排序
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
// 选择法排序
void selectionSort(int arr[], int n) {
int i, j, min_idx, temp;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
int main() {
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 使用冒泡法排序
bubbleSort(arr, n);
printf("Array sorted using bubble sort: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 使用选择法排序
selectionSort(arr, n);
printf("Array sorted using selection sort: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
冒泡法和选择法都是简单的排序算法,但它们的实现方式有所不同。冒泡法每次比较相邻的两个元素,如果它们的顺序错误就交换它们的位置,这样每一轮排序都会将最大的元素放到数组末尾。选择法则每次从剩余元素中选择最小的元素,并将其放到已排序部分的末尾。因此,冒泡法的时间复杂度为O(n²),而选择法的时间复杂度也为O(n²)。但是,在某些情况下,选择法可能会比冒泡法更快,因为它只需要进行n次交换,而冒泡法可能需要进行更多次的交换。
阅读全文