算法基础
一言一语
美女程序员的进击之路
展开
-
排序算法总结(-)冒泡排序
1、冒泡排序原理:依次比较两个相邻的元素,将值大的交换在右边。第一趟比较完成后,最后一个数一定是最大的一个数,第二躺比较的时候最后一个数不参与比较;第二趟比较完成后,倒数第二个数也是数组中第二大的数;依次类推,到第N-1趟,数组已经有序。代码:void BUbbleSort(int[] arr, int length){ for (int i =0;i<length-...原创 2019-04-11 14:48:45 · 114 阅读 · 0 评论 -
排序算法总结(二)-选择排序
1.选择排序算法原理:首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后再从剩余未排序元素中寻找最小元素,放到已排序序列的末尾。算法描述初始状态:无序区R[1...n],有序区为空;第i趟排序(i=1,2,3...,n-1)开始时,当前有序区和无序区分别为R[1...i-1]和R[i...n]。从无序区选出最小的关键字记录R[k],将它与无序区的第一个记录交换。依次执行n...原创 2019-04-11 15:41:40 · 130 阅读 · 0 评论 -
排序算法总结(三)-插入排序
插入排序算法原理构建有序数列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法刚开始时,默认第一个元素有序。void insertSort (int a[], int length){ if (length == 0) return array; for (int i=0;i<length-1;i++){ int...原创 2019-04-11 16:24:19 · 107 阅读 · 0 评论 -
排序算法总结(四)-快速排序
快速排序算法原理:在待排序数组里选择一个基准,根据这个基准将数组分成两个部分,第一个部分小于这个基准,第二个部分大于这个基准。继续对这两个部分进行排序,以达到整个序列有序。void QuickSort(int a[], int start, int end){ if(start > end || a.length<1 || start < 0 || a.leng...原创 2019-04-11 20:48:05 · 135 阅读 · 0 评论 -
排序算法总结(五)-堆排序
堆排序主要分为初始化最大堆和正式排序两个部分。基本思想转自博客:http://www.cnblogs.com/0zcl/p/6737944.html根据博主思路写代码//堆排序函数void HeapSort(int a[], int length){ BuildMaxHeap(a,length); int temp; for (int i=length-...转载 2019-04-11 21:55:29 · 108 阅读 · 0 评论