//重点:在C中merge_sort是C中的一个归并排序函数
//归并排序的优点: 稳定,适合处理链表数据,提高了运行效率。
#include <stdio.h>
#include <stdlib.h>
#define N 100010
int q[N],tmp[N]; //q是输出的数组,tmp是处理的数组
void merge_sort(int q[], int l, int r)
{
int mid;
if (l>=r) return; //如果l大于r,一个数都没有,那就退出。
mid = l+r >> 1;
merge_sort( q , l , mid), merge_sort( q , mid+1 , r); //把他们从中间分为两个部分 并 进行排序
int s = 0,i = l,j = mid + 1;
while(i <= mid && j <= r) //这里要注意是i和j进行判断
if (q[i] <= q[j]) tmp[s ++] = q[i++]; //判断两个数组的大小,小的放入数组
else tmp[s ++] = q[j++];
while (i <= mid) tmp[s ++] = q[i ++]; //判断两个数组是否用完,没用完就加到后面去
while (j <= r) tmp[s++] = q [j ++];
for (i = l,j = 0; i <= r; i ++, j ++) q[i] = tmp[j];
}
int main ()
{
int n;
int i;
scanf("%d",&n); //输入n
for (i = 0; i < n; i ++) scanf(" %d ", &q[i] );
merge_sort(q, 0, n-1); //第一个是数组,第二个是l,第二个是r 这句话的意思是对q中的0~n-1个元素进行排序
for (i = 0; i < n ;i ++) printf("%d ", q[i]);
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla