.选择排序算法设计(升序)
时间: 2024-09-12 17:12:56 浏览: 24
选择排序是一种简单直观的排序算法,它的基本思想是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。以下是Python中选择排序的一个实现:
```python
def selection_sort(arr):
n = len(arr)
for i in range(n):
# 找到剩余未排序部分中的最小元素的索引
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
# 将找到的最小元素与当前未排序部分的第一个元素交换位置
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
# 示例用法
arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("排序后的数组:", sorted_arr)
```
在这个过程中,每次循环都会确定当前位置及其右侧部分中的最小元素,并将其放到当前位置,所以整个过程就像是在每一轮中进行一次“迷你”的排序。
相关问题
c++选择排序算法设计升序
在 C++ 中,选择排序是一种简单直观的排序算法,它的工作原理每次从未排序的部分选取最小(或最大)的元素,放到已排序部分的末尾。这里是一个基本的选择排序算法设计,用于升序排列:
```cpp
#include <iostream>
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; ++i) { // 遍历数组直到倒数第二个元素
int minIndex = i; // 假设当前元素是最小的
for (int j = i + 1; j < n; ++j) { // 比较从当前到结尾的元素
if (arr[j] < arr[minIndex]) { // 如果找到更小的元素,更新最小索引
minIndex = j;
}
}
// 将找到的最小元素与当前位置交换
std::swap(arr[i], arr[minIndex]);
}
}
// 测试函数
int main() {
int arr[] = {9, 5, 7, 1, 6, 3};
int n = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array:\n";
for (int i = 0; i < n; ++i)
std::cout << arr[i] << " ";
selectionSort(arr, n);
std::cout << "\nSorted array (ascending):\n";
for (int i = 0; i < n; ++i)
std::cout << arr[i] << " ";
return 0;
}
```
在这个例子中,`selectionSort` 函数首先遍历数组,然后内层循环查找未排序部分的最小值,最后将这个最小值放到已排序部分的开始位置。运行 `main` 函数可以看到数组是如何被按升序排列的。
选择排序算法设计升序代码
选择排序是一种简单直观的排序算法,它的工作原理是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后继续从剩余未排序元素中寻找最小(大)元素,直到所有元素都排好序。以下是选择排序的一个升序版本的Python代码:
```python
def selection_sort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# 找到当前未排序部分的最小元素的索引
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
# 将找到的最小元素与第一个未排序元素交换位置
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
# 示例
arr = [64, 25, 12, 22, 11]
sorted_arr = selection_sort(arr)
print("排序后的数组:", sorted_arr)
阅读全文