算法系列
lwthad
活到老学到老|知耻而后勇
展开
-
算法系列之——选择排序
排序算法主要分为以下几类: 选择排序:直接选择、堆排序; 插入排序:直接插入、希尔; 交换排序:冒泡、快速; 归并排序; 基数排序; 一、直接选择排序 介绍:从左往右,依次取每一个数(基准数)的数组下标赋值给min,取min的值与后面的所有数字进行比较,如果大于后面的数则交换下标,继续往右比较,直到最后一个数字 这样,min的值对应的就是数组中最小值的下标,然后判断min和此次...原创 2019-01-15 15:28:15 · 113 阅读 · 0 评论 -
算法系列之——插入排序
一、直接插入排序 介绍:从第二位数开始,先判断是否小于左一位的数,小于则将自身作为哨兵依次与左侧的比较,如果小于左侧的数, 则将左侧的数后移一位,直到遇到大于或等于哨兵的数,结束循环比较,将哨兵插入空出来的位置上;再从第三位开始,重复上面的操作,直到数组最后一位,这样就重组成了一个从小到大的数组。 void InsertSort(int array[], int size){ fo...原创 2019-01-15 15:28:11 · 95 阅读 · 0 评论 -
算法系列之——算法稳定性
转自:http://wenku.baidu.com/view/1af1e5d7b14e852458fb5722.html 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 理由: (1)冒泡排序 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果...转载 2019-01-15 16:16:53 · 1386 阅读 · 1 评论 -
算法系列之——交换排序
一、冒泡排序 介绍: template<typename T> void BubbleSort( T data[], int n) { bool flag=true; //用来确保数组一旦有序立即跳出,省去多余比较 for(int i=1; i<n && flag; i++) //加入标志位为true的条件 { flag = false; //默认...原创 2019-01-15 17:13:34 · 125 阅读 · 0 评论