这篇博客我将写我学习排序的过程我会将种排序写在这篇文章底下

我个人比较喜欢用题目来熟悉代码所有下面的基本会用题目来描写

我在洛谷里找到了这题


【模板】排序

题目描述

将读入的 $N$ 个数从小到大排序后输出。

输入格式

第一行为一个正整数 $N$。

第二行包含 $N$ 个空格隔开的正整数 $a_i$,为你需要进行排序的数。

输出格式

将给定的 $N$ 个数从小到大输出,数之间空格隔开,行末换行且无空格。

样例 #1

样例输入 #1

1
2
5
4 2 4 5 1

样例输出 #1

1
1 2 4 4 5

提示

对于 $20\%$ 的数据,有 $1 \leq N \leq 10^3$;

对于 $100\%$ 的数据,有 $1 \leq N \leq 10^5$,$1 \le a_i \le 10^9$。


没有学排序语法的我一开始看到这题我觉得,就这随随便便就打出来了好吗?

于是我提交了一个冒泡排序像下面这样。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
int main()
{
int i = 0;
int n = 0;
int a = 0;
int arr[100001] = { 0 };
scanf("%d", &n);
for (;i < n;i++)
{

scanf("%d",&a);
arr[i] = a;
}
for (i = 0;i < n;i++)
{
int j = 0;
int t = 0;
for (j=i+1;j<n;j++)
{
if (arr[i] < arr[j])
{
t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}

}
}
for (i = 0;i < n;i++)
{
printf("%d ", arr[i]);
}
return 0;
}

结果完美的超时了,于是我在网上寻找了排序的算法;总共6钟我会在底下一一介绍(这篇文章我可能不会太快写完因为有的排序要指针而我不会指针

首先是最简单也是运行最慢的冒泡排序冒泡排序是复杂的最高的排序它的主要原理就是从数组的第