摘要: 思路 前面和 "快速排序1" 的思想大致一样 1. 找一个基准数先将数组分成三部分(小于基准数部分,基准数,大于基准数部分)再进而递归 2. 区别在于for循环部分 3. 设置一个i,将小于基准数p的部分放在arr[l+1,j]中,将大于基准数p的部分放在arr[j+1,r]中 4. 即判断arr[ 阅读全文
posted @ 2017-05-15 22:47 郑闯 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 基本思想: 1. 从序列当中选择一个基准数(pivot),我们选择第一个数为基准数。 2. 先设置一个哨兵j,从右向左找到比基准数小的数 3. 再设置一个哨兵i,从左往右找到比基准数大的数(i不能大于j) 4. 如果i void _quick_sort(int arr[],int l,int r){ 阅读全文
posted @ 2017-05-15 21:34 郑闯 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 递归的写法 1. 写下只有一次递归的时候要做哪些事情并将其封装成单个函数dosome() 2. 写下判断语句,在什么情况下重复递归调用 示例代码 阅读全文
posted @ 2017-05-15 20:13 郑闯 阅读(1408) 评论(0) 推荐(0) 编辑
摘要: 思想 每一轮选择出数组中最小的,最后与这一轮的第一个数交换位置 代码 c include int select_sort(int arr[],int n){ for (int i=0; i 阅读全文
posted @ 2017-05-15 19:13 郑闯 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 思想 把待排序的纪录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的纪录插入完为止,得到一个新的有序序列。 设无序数组为a[0…n 1]。 1. 初始时,a[0]自成1个有序区,无序区为a[1..n 1]。 2. 令i=1,将a[i]插入当前的有序区a[0…i 1]中形成a[0…i 阅读全文
posted @ 2017-05-15 18:10 郑闯 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 冒泡排序的实现原理很简单 1. 右边的数值大于左边,则进行交换 2. 每次遍历一定会确定一个最大值 3. 对于长度为n的数组,只需要进行(n 1)次遍历 实现代码 c include void bubble_sort(int a[], int n) { int i, j, temp; for (j 阅读全文
posted @ 2017-05-15 14:25 郑闯 阅读(134) 评论(0) 推荐(0) 编辑