(如无特殊说明,下面的排序都是从小到大排序)
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int main()
{
//输入
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//选择排序
for (int i = 1; i <= n; i++) //当前待确定的位置是 a[i]
for (int j = i + 1; j <= n; j++) //从 a[i]~a[n] 选择最小的数放到 a[i]
if (a[j] < a[i])
swap(a[j], a[i]);
//输出
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int main()
{
//输入
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//冒泡排序
for (int i = 1; i <= n - 1; i++) //执行 n-1 次
//从前往后看,依次维护所有相邻的位置
for (int j = 1; j <= n - 1; j++)
if (a[j] > a[j + 1])
swap(a[j], a[j + 1]);
//输出
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int main()
{
//输入
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//插入排序
for (int i = 2; i <= n; i++) //尝试把a[i]插入到前面合适的位置
//a[1]~[i-1] 是有序的 a[i]~a[n] 是无序的
for (int j = i; j >= 2; j--)
if (a[j] < a[j - 1])//如果比前面的小就插入
swap(a[j], a[j - 1]);
else //如果大于等于前面的数,说明已经到了合适的位置
break;
//输出
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int cnt[2005];//cnt[i]: 统计i的出现次数
int main()
{
//输入
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//计数排序
for (int i = 1; i <= n; i++)
cnt[a[i]]++; //给a[i]的出现次数加1
//输出
for (int i = 1; i <= 2000; i++)//从 a 数组的最小值,枚举到 a 数组的最大值
for (int j = 1; j <= cnt[i]; j++) //i 出现了几次就输出几个 i
cout << i << " ";
return 0;
}
a[x]~a[y]
按照小于号作为比较规则,从小到大排序:
sort(a + x, a + y + 1);
a[x]~a[y]
按照 cmp
函数作为比较规则排序:
sort(a + x, a + y + 1, cmp);
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int cnt[2005];
int main()
{
//输入
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//sort
sort(a + 1, a + n + 1); //默认是小于号规则
//输出
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
return 0;
}
#include <bits/stdc++.h>
using namespace std;
int n;
int a[1005];
int cnt[2005];
//返回 x, y 的顺序是否符合规则
bool cmp(int x, int y)
{
return x < y;
}
int main()
{
//输入
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
//sort
sort(a + 1, a + n + 1, cmp); //自定义比较函数代替小于号
//输出
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
return 0;
}