算法——交换排序
来源:互联网 发布:php 接口开发安全性 编辑:程序博客网 时间:2024/05/22 23:28
交换排序:通过两两交换,最终按照一定的顺序把记录排好。先来看下冒泡排序,相信大家都不陌生。
先说下自己的学习冒泡的历程:虽然学习计算机两年了,但是对冒泡排序还不是很熟,所以,刚开始的时候就举出了两个数来进行冒泡排序,然后自己再往外面加了循环,再通过测试,分析,写出了下面的程序。
<span style="font-family:KaiTi_GB2312;font-size:18px;">int main(){ int array[10000],i,j,temp; for (i=0;i<10000;i++) { array[i]=i; } //核心代码 for(i=0;i<10000;i++) { for(j=9999;j>i;j--) if(array[j]>array[j-1]) { temp=array[j]; array[j]=array[j-1]; array[j-1]=temp; } } //核心代码 for (i=0;i<10000;i++) { printf("%d,",array[i]); }}</span>
冒泡排序完事了,再来快速排序。在学习快速排序时,对自己来说还是有一定难度的,尤其是在找递归的边界值的时候,走了大弯路了。
总结:快速排序两个难点:核心代码,如何对数组进行排序,有两种:双边扫描和单边扫描
<span style="font-family:KaiTi_GB2312;font-size:18px;">#include <stdio.h>#include <stdlib.h>//核心代码int centralCode(int array[],int low,int high){ int temp = array[low]; while(low<high) { if( low<high && temp>=array[high]) high--; array[low]=array[high]; if(low<high && temp<=array[low+1]) low++; array[high]=array[low]; } array[low]=temp; return high;}//递归调用核心代码void sort (int array[],int low ,int high){ if(low<high) //递归的边界值:当数组只有一个元素时,也就是说最左和最右相等。 { int temp; temp=centralCode(array,low,high); sort(array,low,temp-1); sort(array,temp+1,high); }}int main(){ int array[10000],i,j,temp; for (i=0;i<10000;i++) { array[i]=i; } //开始排序 sort(array,0,9999); //输出 for (i=0;i<10000;i++) { printf("%d,",array[i]); }}</span>
还望大家多多指点。
0 0
- 算法——交换排序
- 排序算法——交换排序
- 排序算法浅析——交换排序
- 排序算法——交换类排序
- 排序算法——交换排序
- 【数据结构与算法】——交换排序
- 【数据结构与算法】——交换排序
- “深入理解”—交换排序算法
- 【算法】排序算法(四)——交换排序
- 排序算法之交换排序——冒泡排序
- 数据结构&算法实践—【排序|交换排序】鸡尾酒排序
- 数据结构&算法实践—【排序|交换排序】奇偶排序
- 数据结构&算法实践—【排序|交换排序】梳子排序
- 数据结构&算法实践—【排序|交换排序】Bogo排序
- 排序算法总结(3)——交换排序
- 算法之交换排序——冒泡排序
- 算法之交换排序——快速排序
- 排序算法复习——交换类排序
- poj2104 K-th Number
- Zabbix-3.0.x使用OneAlert发送告警
- xor 2016 国庆集训day3
- jQuery 清空div样式 $("#UserDivID").empty()
- Codeforces Round #375 (Div. 2) E. One-Way Reform(有n个点,m条无向边,给每条边定向,使得入度等于出度的点最多)
- 算法——交换排序
- My SQL 对数据的简单查询
- poj3984
- python中if __name__ == '__main__': 的解析
- 数据结构与算法学习-哈希表入门
- java入门之输出基本数据类型
- spring基础---- IOC容器
- 软件设计 -- 中介者模式
- storm原理