thumbnail
归并排序
定义: 归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。 算法思路:归并排序算法有两个基本的操作,一个是分,也就是把原数组划分成两个子数组的过程。另一个是治,它将…
thumbnail
逆序数
要想求逆序数首先要知道什么是逆序数 逆序数: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 举个例子: 标准列是1 2 3 4 5 那么 5 4 3 2 1 的逆序数算法: 看第二个,4之前有一个5,在标准列中5在4的后面,所以记1个 类似的, 第三个…
thumbnail
快速排序
之前那个写错了 思路也变了 这个不想写了 直接敲代码了 #include<stdio.h> int n; int a[100010]; void swap(int* p1,int* p2)/交换两数的值 { int temp=*p1; *p1=*p2; *p2=temp; } void quick(int l,int r)//快…
thumbnail
快速排序
首先我们要确定一个基准数(一般以数组的第一个数作为基准数) 然后我们需要确定一个首和尾 我们以黄色方框中的数作为基准数 i为首 j为尾 这里我们先移动j如果j>基准数那我们就j-- 如果j<基准数就i++ 当i<基准数时i++ 所以当i移动到7时 j与i交换 这时j==7>基准数 所以j-- 当移动到4时j<基准数所以…