循环录入5个整型数字,进行降序排列后输出结果
一、冒泡排序
1、第一轮比较的次数:数组的总长度 -1
2、下一轮比上一轮比较的次数少一次
代码:
#include <iostream>
using namespace std;
int main()
{
int nums[] = {15, 25, 90, 23, 9};
int temp;
int N = 5; //数组大小
//外层循环控制比较的轮数
for(int i = 0; i < N-1; i++)
{
// 内层循环控制每轮的比较和交换
for(int j = 0; j < N-i-1; j++)
{
if (nums[j] < nums[j+1])
{
//交换
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
for (int i = 0; i < 5; i++)
{
cout << "按照降序排列后的数组: " << nums[i] << endl;
}
return 0;
}
二、选择排序
代码:
#include <iostream>
using namespace std;
int main()
{
//选择排序
int nums[] = {8, 4, 2, 1, 23, 23, 344, 12};
//通过计算得到整型数组的实际长度(不能用于string数组)
int numsLen = sizeof(nums) / sizeof(int);
int min = nums[0]; //假设最小值是数组的第一个元素
int minIndex = 0; //最小值的初始下标设置为0
int temp; //临时变量用于交换
for(int i = 0; i < numsLen; i++ )
{
min = nums[i]; //假设现在nums[i]是最小值
minIndex = i;
for (int j = i+1; j < numsLen; j++)
{
if(nums[j] < min)
{
min = nums[j];
minIndex = j;
}
}
//交换
if(minIndex > i)
{
temp = nums[minIndex];
nums[minIndex] = nums[i];
nums[i] = temp;
}
}
cout << "排序后:" << endl;
for (int i = 0; i < numsLen; i++)
{
cout << nums[i] <<endl;
}
//逆序
for(int i = 0; i < numsLen / 2; i++)
{
temp = nums[i];
nums[i] = nums[numsLen - i -1];
nums[numsLen - i -1] = temp;
}
cout << "逆序后: " << endl;
for(int i = 0; i < numsLen; i++)
{
cout << nums[i] << endl;
}
return 0;
}