实验7-1-4 选择法排序
时间: 2024-01-12 13:05:38 浏览: 100
选择法排序是一种简单的排序算法,其基本思想是在未排序的序列中找到最小元素,然后将其放在已排序序列的末尾。重复此过程直到所有元素均排序完毕。
具体实现过程如下:
1. 遍历序列,找到最小元素。
2. 将最小元素与序列的第一个元素交换位置,此时第一个元素已经排好序。
3. 对剩余未排序的序列重复上述步骤,直到所有元素均排序完毕。
以下是一个简单的选择法排序的实现示例(使用 Python 语言):
```python
def selection_sort(arr):
n = len(arr)
for i in range(n):
# 找到未排序部分中的最小元素
min_index = i
for j in range(i+1, n):
if arr[j] < arr[min_index]:
min_index = j
# 将最小元素与未排序部分的第一个元素交换位置
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
```
该算法的时间复杂度为 O(n^2),不适用于大规模数据的排序。
相关问题
实验07-2:使用函数进行选择法排序
好的,我很乐意为您介绍实验07-2:使用函数进行选择法排序。
选择法排序是一种简单的排序算法,其基本思想是每次从未排序部分中选出最小(或最大)的元素,放到已排序部分的末尾。使用函数来实现选择法排序可以使代码更加模块化和可重用。
以下是使用函数进行选择法排序的基本步骤:
1. 定义一个函数,接受一个数组和数组的长度作为参数。
2. 在函数中,使用两层循环来实现选择法排序:
- 外层循环控制已排序部分的增长
- 内层循环从未排序部分中寻找最小值
3. 每次找到最小值后,将其与未排序部分的第一个元素交换位置
4. 重复这个过程,直到整个数组有序
下面是一个使用C语言实现的示例:
```c
#include <stdio.h>
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[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
void printArray(int arr[], int size) {
int i;
for (i=0; i < size; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
printf("原数组: \n");
printArray(arr, n);
selectionSort(arr, n);
printf("排序后: \n");
printArray(arr, n);
return 0;
}
```
在这个示例中,我们定义了一个`selectionSort`函数来实现选择法排序,一个`printArray`函数来打印数组,以及`main`函数来测试排序效果。
使用函数进行选择法排序的优点包括:
1. 代码复用: 排序逻辑封装在函数中,可以重复使用。
2. 提高可读性: 主程序逻辑更清晰,更容易理解。
3. 便于调试: 可以单独测试排序函数。
4. 易于维护: 如果需要修改排序算法,只需修改一个地方。
阅读全文