冒泡排序+选择排序+快速排序
来源:互联网 发布:网络购彩最新消息2016 编辑:程序博客网 时间:2024/05/16 05:22
一. 冒泡排序
冒泡思想比较简单,直接上代码
void BubbleSort(int num[], int n){int i,j;for(i=0;i<n;i++){for(j=i;j<n;j++){if(num[i]>num[j]){swap(&num[i], &num[j]);}}}}
二. 选择排序
选择排序和冒泡写起来比较像,不过冒泡是碰到更小的就交换,而选择是先找到最小的,然后交换,一次循环只交换一次,废话不多说,上代码
void SelectionSort(int num[], int n){int i,j,min;for(i=0;i<n;i++){min = i;//找出最小值for(j=i+1;j<n;j++){if(num[min] > num[j])min = j;}//交换if(min != i){swap(&num[i], &num[min]);}}}
三. 快速排序
快速排序稍微复杂点,不过理解起来也不难,就是先通过查找交换,找到一个num[i]使num[i]前面的数都小于num[i],后面的都大于num[i],然后对num[0]...num[i-1]和num[i+1]...num[n-1]这两个子数组进行同样的操作,直到子数组只剩1个元素停止。上代码
void QuickSort(int num[], int p_low, int p_high){int low = p_low, high = p_high;if(low >= high)return;//直到low和high都到中间while(low < high){//low向中间移动while(num[low] <= num[high]){if(low>=high)break;low++;}swap(&num[low], &num[high]);//high向中间移动while(num[low] <= num[high]){if(low>=high)break;high--;}swap(&num[low], &num[high]);}//处理两边QuickSort(num, p_low, low-1);QuickSort(num, low+1, p_high);}
另外贴出swap代码
void swap(int *a, int *b){int temp;temp = *a;*a = *b;*b = temp;}
注:以上代码在VC6.0完美编译运行
1 0
- 【排序】快速排序 冒泡排序 选择排序
- 排序-冒泡,快速(选择排序)
- 快速,冒泡,选择排序
- 冒泡,选择,快速排序
- 选择,冒泡,快速排序
- 冒泡,选择,快速排序
- 冒泡、选择、快速排序
- 冒泡排序,选择排序,快速排序
- 冒泡排序,选择排序,快速排序
- 冒泡排序,选择排序,快速排序
- 冒泡排序,快速排序,选择排序
- 冒泡排序,选择排序,快速排序
- 冒泡排序,选择排序,快速排序
- 冒泡排序,选择排序,快速排序
- 冒泡排序,快速排序,简单选择排序
- 冒泡排序 选择排序 快速排序
- 冒泡排序+选择排序+快速排序
- 冒泡排序和选择排序、快速排序
- 翻译漫谈笔记之2科技翻译的特点
- C++第四次实验输出星号图
- 布局填充为View的三种写法
- PAT1004福尔摩斯的约会
- 并查集学习笔记2
- 冒泡排序+选择排序+快速排序
- Android Mina 与Linux TCP通信-1
- Leetcode 6. ZigZag Conversion
- Java中的线程状态之堵塞
- poj 1852 Ants
- Quartus II 安装教程—FPGA入门教程
- ExpandableListView数据适配,子层加载不同布局的方法
- 博弈论中SG函数的解释与运用
- android tv开发adb 命令