请针对实例2.6.1.4.5.3.2分别用选择排序和冒泡排序进行排序,并用C语言实现
时间: 2024-01-24 11:17:14 浏览: 78
实例2.6.1.4.5.3.2给出的数据为:{5, 3, 6, 2, 8}。
首先,我来介绍一下选择排序和冒泡排序的基本思路:
- 选择排序:每次从未排序的数中选取最小的数,放到已排序的数列末尾,直到所有数都排序完成。
- 冒泡排序:每次比较相邻两个数的大小,如果前一个数大于后一个数,则交换它们的位置,一轮排序下来,最大的数会“冒泡”到数列的末尾,然后再从头开始比较,直到所有数都排序完成。
接下来,我将分别用选择排序和冒泡排序对该数据进行排序,并用C语言实现。
选择排序实现代码如下:
```c
#include <stdio.h>
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) {
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
int main() {
int arr[] = {5, 3, 6, 2, 8};
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
printf("Selection sort result:");
for (int i = 0; i < n; i++) {
printf(" %d", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
Selection sort result: 2 3 5 6 8
```
冒泡排序实现代码如下:
```c
#include <stdio.h>
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {5, 3, 6, 2, 8};
int n = sizeof(arr) / sizeof(arr[0]);
bubbleSort(arr, n);
printf("Bubble sort result:");
for (int i = 0; i < n; i++) {
printf(" %d", arr[i]);
}
printf("\n");
return 0;
}
```
输出结果为:
```
Bubble sort result: 2 3 5 6 8
```
可以看出,选择排序和冒泡排序都能够对该数据进行排序,且得到的结果相同。但是,它们的时间复杂度不同,选择排序的时间复杂度为O(n^2),而冒泡排序的时间复杂度也为O(n^2),因此在实际应用中,选择排序更为高效。
阅读全文