算法
vvc223c
这个作者很懒,什么都没留下…
展开
-
三向切分的快速排序C/C++、C#代码实现
之前我们使用的是二向切分的快速排序,三向切分在原来的基础上多了一个指针,用来处理相等的情况,对于存在大量重复元素的数组,这种方法比标准的快速排序的效率高得多.C#实现 private static void QuickSort(int[]a,int low, int high) { if (high <= low) ...原创 2019-11-21 18:56:20 · 243 阅读 · 0 评论 -
快速排序C/C++,C#代码实现
快速排序原理快速排序是一种分治的排序算法,使用切分元素将一个数组分成两个子数组,将两部分独立地排序,当两个子数组都有序时整个数组也就自然有序了.C/C++实现int partition(int a[], int low, int high){ int i = low, j = high + 1; //左右扫描指针 int v = a[low];//切分元素 int temp; wh...原创 2019-11-21 17:48:32 · 190 阅读 · 0 评论 -
归并排序C/C++、C#代码实现
归并排序的主要原理:分治递归,是将两个有序的数列合并成一个大的有序的序列。通过递归,层层合并。C/C++原地归并的实现int *aux;//辅助数组,全局变量void Merge(int a[], int low, int mid, int high)//原地归并的实现,将low-mid和mid+1-high归并成一个数组 //放在low-hight中{ int i = low; i...原创 2019-11-21 14:58:28 · 125 阅读 · 0 评论 -
希尔排序C/C++、C#代码实现
希尔排序基于插入排序的快速的排序算法,对于大规模乱序数组插入排序很慢,希尔排序不相邻的元素以对数组的局部进行排序,并最终用插入排序将局部有序的数组排序.希尔排序的思想是:**使数组中任意间隔为h的元素都是有序的。这样的数组被称为h有序数组。**换句话说,一个h有序数组就是h个互相独立的有序数组编制在一起组成的一个数组C/C++实现void ShellSort(int a[], int siz...原创 2019-11-20 19:41:05 · 162 阅读 · 0 评论 -
冒泡排序C/C++、C#代码实现
原理:将整个数组a分为有序的和无序的两个部分,无序的在前,有序的在后。开始,整个数组都是无序的,有序的部分没有元素每次要使无序部分的最大元素移到有序部分最右边C/C++实现void BubbleSort(int a[], int size){ for (int i = size; i > 0; --i) { for (int j = 0; j < i; ++j) ...原创 2019-11-20 17:25:29 · 108 阅读 · 0 评论 -
选择排序C/C++、C#代码实现
思路:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换).然后,在剩下的元素中在找最小的元素,与数组的第二个元素交换位置.不断的选择剩余元素中的最小者,所以称为选择排序。C/C++实现void SelectionSort(int a[], int size){ for (int i = 0; i < size - 1;...原创 2019-11-20 16:35:36 · 95 阅读 · 0 评论 -
插入排序C/C++、C#代码实现
通常人们整理牌的方法是一张一张的来,比如斗地主,将每一张牌插入到其他已经有序的牌中的适当位置。在计算机的实现中,为了给要插入的元素腾出空间,我们需要将其余所有元素在插入之前都向右移动一位,具体实现如下:C/C++实现将整个数组a分为有序和无序的两个部分。有序的在前面,无序的在后面。一开始有序的部分只有a[0],其余部分都属于无序的部分每次取出无序最左边的元素,把他加入有序的部分。假设插...原创 2019-11-20 15:12:17 · 144 阅读 · 0 评论 -
二分查找C/C++、C#代码实现
C#实现 public static int BinarySearch(int key, int[]a) { int low = 0; int hight = a.Length - 1; while(low <= hight) { i...原创 2019-11-20 12:39:25 · 109 阅读 · 0 评论