算法实现之交换排序——冒泡与快排
来源:互联网 发布:医药管理系统 源码 编辑:程序博客网 时间:2024/06/03 19:59
冒泡排序
基本思想:
将需要排序的全部元素看成一列,自上而下对相邻两个元素进行比较和调整,让较大的元素往下沉,较小的元素往上冒。也就是如果相邻的两个元素比较后发现与要求的排序顺序相反,则交换他们的位置。元素往上冒的过程类似于水中的气泡,所以叫冒泡排序。
算法实现:
void bubblesort(int a[], int n){for (int i = n-1; i > 0; i--)// 第n-i趟确定地i个位置的元素for (int j = 0; j < i; j++){if (a[j] > a[j + 1])swap(a[j], a[j + 1]);}}
冒泡排序有一种常用的改进方法,就是增加一个标志变量flag,当某一趟冒泡过程没发生一次交换,则说明此时的整个序列已经有序,即可以结束算法。
快速排序
基本思想:
理论上冒泡排序一趟只是确保找到一个元素最终的位置,而快速排序则是在找到一个元素(基准元素)的最终的位置的同时确保基准元素左边的都小于等于它,右边的都大于等于它,从而大大的加速了排序的过程。
步骤:
1、任意选择一个基准元素,通常选第一个或者最后一个
2、将序列分成两部分,左边的都小于等于基准元素,右边的都大于等于基准元素。具体过程如下:
2.1、从后向前找第一个小于基准元素的元素,找到后交换其与基准元素的位置
2.2、从前往后找第一个大于基准元素的元素,找到后交换其与基准元素的位置(2.1交换后的位置)
2.3、执行步骤2.1直到索引发生交叉,说明整个序列已经遍历一趟,此时发生交叉的位置即是基准元素的最终位置。
3、对基准元素的左右两部分分别递归执行步骤1
算法实现:
// 快速排序int partion(int a[], int low, int high){while (low < high){//int key = a[low];while (low < high && a[high] >= a[low])high--;if (low >= high)break;swap(a[low], a[high]); // 交换后,基准元素在highwhile (low < high && a[low] <= a[high])low++;if (low >= high)break;swap(a[low], a[high]);}return low;}void quicksort(int a[], int low, int high){if (low < high){int pos = partion(a, low, high);quicksort(a, low, pos - 1);quicksort(a, pos + 1, high);}}
0 0
- 算法实现之交换排序——冒泡与快排
- 数据结构与算法专题之查找与排序——交换类排序(冒泡、快排与归并)
- 排序算法之交换排序(冒泡和快排)
- 交换排序之冒泡与快排C/C++
- 数据结构与算法复习之排序算法——冒泡、插入、快排、归并
- 算法—排序(快排,冒泡)
- 冒泡排序与快排算法
- 暑假集训 8.13 数据结构实验之排序二:交换排序 (冒泡 与 快排.....)
- 经典排序——归并、快排递归与非递归实现与冒泡排序
- 排序算法-冒泡——插入——快排
- 交换排序总结(快排,冒泡)
- 交换排序:快排VS冒泡
- js实现排序算法——插入,选择,冒泡,快排
- 常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
- 三大排序算法实现(冒泡,选择,快排)
- 常用排序算法简介与java实现(冒泡、插入、选择、希尔、归并、快排)
- 排序算法之二:冒泡、插入、希尔、快排、归并
- 各种排序:冒泡,归并,快排等实现与对比。
- TCP/IP详解(四)---ICMP:Internet控制报文协议
- 关于函数memset的若干用法和注意事项
- JAVA WEB环境配置(JDK1.7+TOMCAT_7.0.55+MYECLIPSE8.6)
- 自定义AlertDialog主题
- Android 开源之StickyHeaderListView 标题渐变、吸附悬停、筛选分类、动态头部
- 算法实现之交换排序——冒泡与快排
- 关于MyElipse tomcat部署成功,却无法添加到webapps的问题
- 解决java compiler level does not match the version of the installed java project facet
- 我就是我......
- 校赛 选修课网址 1096: Is The Same?(kmp或者find)
- Android版本号对应关系
- 构建BBB内核
- 《TCP/IP详解》学习笔记-第9/10章 IP选路&动态选路
- Mac OS X系统 HomeBrew的安装和简单使用