排序
排序算法
suxiaorui
孤独与我 随风相伴
展开
-
acwing——785. 快速排序
快速排序给定你一个长度为n的整数数列。请你使用快速排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53...原创 2020-03-08 09:40:07 · 660 阅读 · 0 评论 -
acwing——787. 归并排序
归并排序给定你一个长度为n的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在1~109109范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤1000001≤n≤100000输入样例:53...原创 2020-03-08 20:58:59 · 331 阅读 · 0 评论 -
快速排序
快速排序简称快排,时间复杂度并不固定,如果在最坏情况下(元素刚好是反向的)速度比较慢,达到 O(n^2)(和选择排序一个效率),但是如果在比较理想的情况下时间复杂度 O(nlogn)。快排也是一个分治的算法,快排算法每次选择一个元素并且将整个数组以那个元素分为两部分,根据实现算法的不同,元素的选择一般有如下几种:永远选择第一个元素 永远选择最后一个元素 随机选择元素 取中间值整...原创 2019-06-07 15:16:13 · 461 阅读 · 0 评论 -
插入排序
插入排序下面是插入排序演示过程:算法思路:每次选择一个元素,并且将这个元素和整个数组中的所有元素进行比较,然后插入到合适的位置代码:#include<stdio.h>void insertion_sort(int arr[], int N){ int i, j; for(i=1; i<N; i++) { int temp = arr[...原创 2019-06-06 00:01:49 · 275 阅读 · 0 评论 -
冒泡排序
冒泡排序下面是冒泡排序过程演示:算法思路:每次选择两个元素,按照需求进行交换(比如需要升序排列的话,把较大的元素放在靠后一些的位置),循环 n 次(n 为总元素个数),这样小的元素会不断 “冒泡” 到前面来,时间复杂度O(n^2)。代码:#include<stdio.h>void Swap(int arr[], int i, int j) //交换函数 ...原创 2019-06-05 23:37:12 · 1042 阅读 · 0 评论 -
归并排序
归并排序下面是归并排序演示过程:算法思路:1.如果给的数组只有一个元素的话,直接返回(也就是递归到最底层的一个情况)2.把整个数组分为尽可能相等的两个部分(分)3.对于两个被分开的两个部分进行整个归并排序(治)4.把两个被分开且排好序的数组拼接在一起代码:/* L = 数组起始位置, M = 数组中间的位置, R = 数组终点位置*/#include...原创 2019-06-05 22:58:44 · 213 阅读 · 0 评论