选择法实现一维数组从小到大排序原理
时间: 2024-05-11 07:15:49 浏览: 100
选择排序的原理是,将数组分为已排序区间和未排序区间。首先,初始化已排序区间为数组的第一个元素,然后从未排序区间中选出最小的元素,将其放到已排序区间的末尾,并且从未排序区间中删除该元素。不断重复这个过程,直到未排序区间为空,即可得到一个从小到大排序的数组。具体实现细节可以参考如下的代码:
```
void selectSort(int* arr, int size) {
for (int i = 0; i < size - 1; i++) { // i 表示已排序区间的末尾索引
int minIndex = i; // 未排序区间中最小值的索引
for (int j = i + 1; j < size; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
if (minIndex != i) { // 如果找到了比 arr[i] 更小的值,则交换两者
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
```
相关问题
选择法实现一维数组从小到大排序
可以使用以下的选择排序代码来实现一维数组从小到大排序:
```c++
void selectionSort(int arr[], int n)
{
int i, j, min_idx;
// 遍历数组
for (i = 0; i < n-1; i++)
{
// 找到 i 到 n-1 中最小的元素索引
min_idx = i;
for (j = i+1; j < n; j++)
{
if (arr[j] < arr[min_idx])
min_idx = j;
}
// 交换找到的最小元素与 i 位置的元素
int temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
}
}
```
需要注意的是,该代码实现的是按升序排序,如果要按降序,只需要将:
```c++
if (arr[j] < arr[min_idx])
```
改成:
```c++
if (arr[j] > arr[min_idx])
```
用冒泡法给一维数组从小到大排序
好的,以下是用冒泡法给一维数组从小到大排序的代码:
```python
def bubble_sort(arr):
n = len(arr)
# Traverse through all array elements
for i in range(n):
# Last i elements are already sorted
for j in range(0, n-i-1):
# Swap if the element found is greater than the next element
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# Example usage
arr = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(arr)) # [11, 12, 22, 25, 34, 64, 90]
```
阅读全文