排序算法
fengsigaoju
本科:南京邮电大学
座右铭:凤兮凤兮思高举!
展开
-
插入排序
#include int main() { int a[100]; int n; int i,j,temp; printf("请输入数组长度\n"); scanf("%d",&n); printf("请输入数组元素\n"); for (i=0;i scanf("%d",&a[i]);原创 2015-06-27 20:35:44 · 493 阅读 · 1 评论 -
sort和qsort的用法
好吧,承认知识匮乏,一直都是手打快排的,才知道有这个函数~~必须要科普一下。MSDN中的定义:templatevoid sort(RanIt first, RanIt last); //--> 1)templatevoid sort(RanIt first, RanIt last, Pred pr); //--> 2)头文件:#include using转载 2015-07-30 18:58:50 · 348 阅读 · 0 评论 -
堆排序
//堆排序的根据是什么,就是每个堆的顶部的元素一定是最小值,那么我先建一个堆,每次记录下堆顶元素,然后把重新排列(这里有点技巧),减少堆的元素个数。//注意堆的n是会变化,所以要先记录下来。//处于同一层的节点大小不能判断,所以每次提取了堆顶元素就必须重新维护一次。(代码在sort部分)#include int a[101];int n;void down(int i)原创 2015-07-16 19:41:32 · 311 阅读 · 0 评论 -
快速排序
/*快速排序就是先找一个基准,然后将所有大于基准的数排在右边,所有小于基准的书排在左边,然后将基准左边的部分再排序,基准右边的部分再排序,即比归并排序少一个合并的过程,因为只要保证左右两边各自有序,合起来必定是有序的(key来做中间比较就可以)当只剩一个元素时自然有序。*/这篇文章的基准是每次待排序数组的最左边的元素#include void quicksort(int a[],int原创 2015-06-14 11:30:27 · 529 阅读 · 0 评论 -
拓扑排序
//拓扑排序关键在于一个入度,首先说明入度的作用,这就好比学科A,入度就是到这门学科的边的条数,如果到这门学科为0了,就说明不需要先学什么//那么自然就要学习这门学科,然后再将与这门学科相连的其他学科的入度减一,因为他们原来入度(即边的条数包含A学科到自己的边,现在A学科学过了,自然少了一个障碍,//而如果此时正好该门学科入度变成0了,那么又可以学习该门学科~~//入度的求法:从上文可原创 2015-08-01 12:33:51 · 368 阅读 · 0 评论 -
希尔排序
#include//在没看懂希尔排序之前我觉得这是什么代码啊,真心难懂,后来看懂过程后,发现就是简单直接插入排序的优化(看懂随手编~~) int main() { int a[100]; int i,j,k,n,gap,temp; printf("请输入数组长度\n"); scanf("%d",&n); printf("请输入数组原创 2015-06-27 20:37:43 · 372 阅读 · 0 评论 -
快速排序求第k小的数
快速排序求第k小的数,思想非常简单,就是如果要查找的k比当前下标low小,则只递归左部分,大则递归右部分,相等则递归右部分,当然由于数组下标从0开始,所以应该是k-1,(比如第一大的数数组下标为0),原理就是快速排序是以一个元素为分隔的,如果求第k大的元素,就是求第n-k+1小的元素.#include int i,j;void quicksort(int a[],int left,int原创 2016-02-24 10:56:45 · 6666 阅读 · 2 评论 -
快速排序完全解读
快速排序,快速排序为什么快,快速排序代码,sort原创 2015-11-14 10:35:28 · 2782 阅读 · 2 评论