假设有一个包含N个元素的一维数组arr,所谓选择排序算法是第一轮先将一维数组中的最小的元素与arr[0]交换;第二轮将一维数组第二小的元素与arr[1]交换;第三轮将一维数组第三小的元素与arr[2]交换;一共比较N-1轮用C语言的指针函数写出
时间: 2024-11-13 10:23:51 浏览: 11
Java编程一维数组转换成二维数组实例代码
5星 · 资源好评率100%
选择排序算法是一种简单直观的排序算法,通过每一轮找到剩余部分中的最小元素并放到已排序序列的末尾,直到整个序列有序。以下是使用C语言指针函数实现选择排序的一个版本:
```c
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, min_idx;
// 遍历所有数组元素
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; // 更新最小值索引
}
}
// 交换找到的最小元素与当前位置的元素
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
printf("After %dth iteration: ", i+1);
printArray(arr, n); // 打印数组,以便观察过程
}
}
// 辅助函数用于打印数组
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int arr[] = {9, 5, 7, 3, 1, 8, 6}; // 示例数组
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
return 0;
}
```
在这个代码中,`selectionSort()` 函数首先遍历数组,然后在一个内部循环里找到未排序部分的最小元素,并用它替换当前位置的元素。外部循环控制这个过程共进行 `n-1` 轮。
运行这个程序可以看到每次迭代后的数组变化,直到数组完全排序。
阅读全文