题目描述
输入n个整数,用选择排序的方法进行排序(升序,由小到大排)
选排方法:从第1到第n个数中找出最大数的位置,将最大数与第1个元素交换。
从第2个数到第n个找出最大数的位置,将最大数与第2个元素交换。
以此类推完成n-1趟选择排序。
Input
第一行数字n 代表接下来有n个整数
接下来n行,每行一个整数
Output
升序输出排序结果
每行一个数据
Sample Input
5
12
18
14
13
16
Sample Output
12
13
14
16
18
Hint
n<=1000
每个数据<=5000
#include <iostream>
using namespace std;
//选择排序
void SelectionSort(int* arr,int len)
{
int i,j;
for(i=0;i<len-1;i++)
{
int min=i;
for(j=i+1;j<len;j++)
{
if(arr[j]<arr[min])
{
min=j;
}
}
//防止自交换
if(min!=i)
{
int tmp=arr[i];
arr[i]=arr[min];
arr[min]=tmp;
}
}
}
//打印数据
void Show(int* arr,int len)
{
int i;
for(i=0;i<len;i++)
{
cout << arr[i] << endl;
}
}
int main()
{
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++)
cin >> a[i];
SelectionSort(a,len);
Show(a,len);
return 0;
}
【以下回答由 GPT 生成】
def selection_sort(n, arr):
for i in range(n-1):
# Find the minimum element in the remaining unsorted portion of the array
min_index = i
for j in range(i+1, n):
if arr[j] < arr[min_index]:
min_index = j
# Swap the minimum element with the first element in the unsorted portion
arr[i], arr[min_index] = arr[min_index], arr[i]
return arr
# Test the function
n = int(input())
arr = []
for _ in range(n):
arr.append(int(input()))
sorted_arr = selection_sort(n, arr)
for num in sorted_arr:
print(num)
该程序使用选择排序算法对输入的n个整数进行排序。首先,程序会获取输入的整数个数n,然后读取每个整数并将其存储在数组arr中。接下来,程序会调用selection_sort函数,传递整数个数n和整数数组arr作为参数。在selection_sort函数中,使用两层循环来进行选择排序。外层循环控制从第1个数到第n-1个数的趟数,内层循环在当前趟数中找到最小数的位置。找到最小数的位置后,将其与当前趟数的第一个元素交换。最后,函数返回排序后的整数数组。最后,程序会遍历排序后的数组并输出每个整数。