c语言指针实现选择排序
时间: 2024-08-12 14:07:35 浏览: 58
链表的多种排序方法(word)
选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。C语言中,我们可以使用指针来简化数组操作,实现选择排序。以下是选择排序的C语言指针版本实现:
```c
#include <stdio.h>
void selectionSort(int* arr, int n) {
int i, j, min_idx;
for (i = 0; i < n - 1; i++) {
// 指针min_ptr指向当前未排序部分的最小值
int *min_ptr = &arr[i];
// 在剩余未排序部分寻找最小值
for (j = i + 1; j < n; j++) {
if (*min_ptr > *(&arr[j])) {
min_ptr = &arr[j]; // 如果找到更小的,更新min_ptr
}
}
// 将找到的最小值与当前位置交换
if (min_ptr != &arr[i]) { // 防止与自身交换
int temp = *min_ptr;
*min_ptr = *arr[i];
*arr[i] = temp;
}
}
}
int main() {
int arr[] = {5, 2, 4, 6, 1};
int n = sizeof(arr) / sizeof(arr);
printf("Before sorting: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
selectionSort(arr, n);
printf("\nAfter sorting: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
阅读全文