选择排序是一种简单直观的排序算法,其基本思想是每次从未排序的部分选择最小(或最大)的元素,然后将其放到已排序部分的末尾。下面我将提供几种不同编程语言的选择排序实现。
Python 实现
```python
def selection_sort(arr):
for i in range(len(arr)):
min_idx = i
for j in range(i+1, len(arr)):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
测试代码
array = [64, 25, 12, 22, 11]
print("排序前:", array)
print("排序后:", selection_sort(array))
```
C 语言实现
```c
include
// 交换两个元素的值
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 选择排序函数
void selectionSort(int arr[], int n) {
int i, j, min_index;
for (i = 0; i < n - 1; i++) {
min_index = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_index]) {
min_index = j;
}
}
if (min_index != i) {
swap(&arr[i], &arr[min_index]);
}
}
}
// 打印数组函数
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);
selectionSort(arr, n);
printArray(arr, n);
return 0;
}
```
C++ 实现
```cpp
include
// 打印数组的函数
void outarray(int array[], int count) {
for (int i = 0; i < count; i++) {
std::cout << array[i] << " ";
}
std::cout << std::endl;
}
// 选择排序函数
void SelectionSort(int array[], int count) {
for (int i = 0; i < count - 1; i++) {
int minposition = i;
for (int j = i + 1; j < count; j++) {
if (array[j] < array[minposition]) {
minposition = j;
}
}
if (minposition != i) {
std::swap(array[i], array[minposition]);
}
}
}
int main() {
int array[] = {1, 62, 16, 9, 2, 6, 98, 31, 19, 0};
int comparecount = 0; // 排序过程中的比较次数
outarray(array, sizeof(array) / sizeof(array));
std::cout << "=开始选择排序=\n\n";
SelectionSort(array, sizeof(array) / sizeof(array));
outarray(array, sizeof(array) / sizeof(array));
return 0;
}
```
以上是几种不同编程语言的选择排序实现。你可以根据自己的需要选择合适的实现方式。