提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
给定一个长度为 n 的数组,请你编写一个函数,返回该数组排序后的结果
前言
数据范围: 0 \le n \le 10000000≤n≤1000000,数组中每个元素都满足 0 \le val \le 10000000000≤val≤1000000000
要求:空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
插入排序

冒泡排序
改进的是插入排序,下面比较一下冒泡排序和插入排序:
插入排序是流动的后边的无序的数插入到固定的前边有序的数列,前边形成的有序的序列是可以改变的。而冒泡排序是是前边无限的数字一个个与自己后边相邻的数字比较,直到把最大的数字放在最后,以此为例,后边形成的是一个有序的数,且是不变的。


快速排序

void Quick_Sort(int *arr, int begin, int end){
if(begin > end)
return;
int tmp = arr[begin];
int i = begin;
int j = end;
while(i != j){
while(arr[j] >= tmp && j > i)
j–;
while(arr[i] <= tmp && j > i)
i++;
if(j > i){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[begin] = arr[i];
arr[i] = tmp;
Quick_Sort(arr, begin, i-1);
Quick_Sort(arr, i+1, end);
}
int* MySort(int* arr, int arrLen, int* returnSize ) {
// write code here
*returnSize = arrLen;
Quick_Sort(arr, 0, arrLen-1);
return arr;
}
参考文章:
快速排序详解
堆排序
待续
二分查找
待续
选择排序


参考文章:
选择排序
总结
直接用快排,简单还好用
本文探讨了排序算法中的快速排序方法,详细解释了快速排序的实现原理,并对比了冒泡排序和插入排序的差异。文章还强调了在时间复杂度O(nlogn)和空间复杂度O(n)的约束下,快速排序作为优选方案的原因。同时,提到了堆排序和二分查找等其他排序算法,但未展开详细介绍。
574

被折叠的 条评论
为什么被折叠?



