请使用c++语言,写出选择排序算法
时间: 2023-08-31 08:20:47 浏览: 119
### 回答1:
我可以用C语言提供一个选择排序算法的示例: void selectionSort(int arr[], int n)
{
int i, j, min_idx;
// One by one move boundary of unsorted subarray
for (i = 0; i < n-1; i++)
{
// Find the minimum element in unsorted array
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
// Swap the found minimum element with the first element
swap(&arr[min_idx], &arr[i]);
}
}
### 回答2:
选择排序是一种简单直观的排序算法,其基本思想是每次从未排序的序列中选择最小(或最大)的元素,将其放到已排序的序列的末尾,然后再从剩余的未排序序列中选择最小(或最大)的元素,放到已排序序列的末尾,依此类推,直到所有元素排序完成。
以下是使用C语言实现选择排序算法的代码:
```c
#include <stdio.h>
void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n - 1; i++) {
minIndex = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
temp = arr[minIndex];
arr[minIndex] = arr[i];
arr[i] = temp;
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
printf("排序结果:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
代码中的`selectionSort`函数实现了选择排序算法。`arr[]`是待排序的数组,`n`是数组的长度。在每一轮排序中,找到未排序序列中最小元素的索引`minIndex`,然后将其与当前起始位置的元素交换,从而完成一次选择操作。最终通过嵌套循环实现所有元素的排序。
### 回答3:
选择排序(Selection Sort)是一种简单直观的排序算法,它的基本思想是将待排序的序列分为已排序和未排序两部分,每次从未排序的部分选取最小(或最大)的元素放到已排序部分的末尾。具体实现如下:
```c
#include <stdio.h>
// 选择排序函数
void selectionSort(int arr[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n-1; i++) {
minIndex = i; // 假设当前 i 为最小值索引
// 在未排序的部分找到最小的元素
for (j = i+1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j; // 更新最小值索引
}
}
// 将最小元素与当前位置交换
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr)/sizeof(arr[0]);
printf("原数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
selectionSort(arr, n); // 调用选择排序算法
printf("\n排序后的数组:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
该程序中,选择排序算法被封装在`selectionSort`函数中。在主函数中,我们定义了一个待排序的数组`arr`,并计算出数组的长度`n`。然后,调用`selectionSort`函数对数组进行排序。最后,打印排序后的数组。输出结果如下:
```
原数组:
64 25 12 22 11
排序后的数组:
11 12 22 25 64
```
以上即为使用C语言编写的选择排序算法的示例。注意,在实际应用中,可以根据具体情况进行优化,如记录最小值索引的位置,减少不必要的交换操作,提升算法效率。
阅读全文