#include<iostream>
using namespace std;
int main()
{
int n, a[1000];//一共n个数,n不超过1000.a用来保存这些数
cin >> n;
//输入n个数
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
//冒泡,不断比较相邻的两个数,如果顺序错了,那么就交换
for (int i = 0; i < n - 1; i++)
{
for (int j = 1; j < n - i; j++)
{
if (a[j - 1] > a[j])
{
int temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
//依次输出
for (int i = 0; i < n; i++)
{
cout << a[i] << endl;
}
system("pause");
return 0;
}
例二:找出第K大的数
描述
用户输入N和K,然后接着输入N个正整数(无序的),程序在不对N个整数排序的情况下,找出第K大的数。注意,第K大的数意味着从大到小排在第K位的数。
输入
N
K
a1 a2 a3 a4 ….. aN
输出
b
#include<iostream>
using namespace std;
int main(){
int a[1000];//存放要排序的数
int N;
int K;
cin >> N;
cin >> K;
for (int i = 0; i < N; i++){
cin >> a[i];
}
//冒泡排序法对数组进行排序
for (int i = 0; i < N; i++){
for (int j = 1; j < N - i; j++){
if (a[j - 1] < a[j]){
int temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
}
}
cout << a[K - 1] << endl;
system("pause");
return 0;
}