一叶斋 发表于 2012-12-30 16:30:20

算法导论-1.排序算法

算法导论-1.排序算法

<div id="cnblogs_post_body">排序算法是最基础的一类算法。主要排序算法包括选择排序、插入排序、冒泡排序、合并排序、堆排序和快速排序。把这些排序算法全部实现一边,再把《算法导论》对应章节后面的习题做一遍,确实是系统学习算法的一个不错的开端。
选择排序

选择排序的想法很简单,把需要排序的数组看成一堆扑克牌:先查一遍,抽出最小的作为第一个张;在剩下的牌堆里再查一遍,选出最小的作为第二个元素……重复直到牌堆耗尽。想法简单的其代价就是运行时间为Θ(n×n):在查询A、2或3的时候,都要反复地比较其与K、Q的大小,直觉告诉我这样做没有意义。
<div class="cnblogs_code">void selectionSort(int* x, int length){    for(int i=0;i<length-1;i++){      int minValue = INT_MAX;      int minPosition = 0;      for(int j=i;j<length;j++){            if(x<minValue){                minValue=x;                minPosition=j;            }      }      int temp = x;      x=x;      x=temp;    }}
页: [1]
查看完整版本: 算法导论-1.排序算法