选择排序
选择排序,从头至尾扫描序列,找出最小的一个元素,和第一个元素交换,接着从剩下的元素中继续这种选择和交换方式,最终得到一个有序序列。153511583598984ab75e4cd.gif
输入格式:
输入在第1行中给出N(1<N≤100),在第2行中给出N个待排序的整数,数字间以空格分隔,并保证数字没有重复的出现。
输出格式:
给出选择排序每一遍后的中间结果数列,数字间以空格分隔,但末尾不得有多余空格。注意:当排序完成时应立即停止。
输入样例1:
7
4 5 7 6 3 2 1
输出样例1:
1 5 7 6 3 2 4
1 2 7 6 3 5 4
1 2 3 6 7 5 4
1 2 3 4 7 5 6
1 2 3 4 5 7 6
1 2 3 4 5 6 7
输入样例2:
5
1 2 3 5 4
输出样例2:
1 2 3 4 5
这题我这样写哪里错了
#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
int n,i;
cin>>n;
int array;
for(i=0;i<n;i++)
{
cin>>array;
}
int j,temp,min;
for(i=0;i<n-1;i++)
{
min=i;
for(j=i+1;j<n;j++)
{
if(array<array)
{
min=j;
}
}
if(min!=i)
{
temp=array;
array=array;
array=temp;
}
for(i=0;i<n;i++)
{
if(i!=n-1)
cout<<array<<" ";
else
cout<<array;
}
}
} 你可以使用以下代码来实现选择排序:
#include <stdio.h>
void selectionSort(int array[], int n) {
int i, j, minIndex, temp;
for (i = 0; i < n-1; i++) {
minIndex = i;
// 找出剩下元素中最小的值
for (j = i+1; j < n; j++) {
if (array < array) {
minIndex = j;
}
}
// 将最小值与当前位置交换
temp = array;
array = array;
array = temp;
}
}
int main() {
int array[] = {5, 4, 3, 2, 1};
int n = sizeof(array) / sizeof(array);
selectionSort(array, n);
printf("排序结果:");
for (int i = 0; i < n; i++) {
printf("%d ", array);
}
return 0;
}
这段代码会对数组进行选择排序,并输出排序后的结果。你可以将需要排序的数组赋值给 `array` 数组,并根据实际情况修改数组长度 `n`。然后调用 `selectionSort(array, n)` 函数进行排序。最后输出排序结果即可。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页:
[1]