三大排序
来源:互联网 发布:淘宝刀具规则 编辑:程序博客网 时间:2024/05/17 22:05
一、冒泡排序
冒泡排序算是排序算法里面的一种较为简单的算法,也是我接触的第一种排序算法,有升序与降序之分,如果面试的时候面试官问道这个题目,一定要问清楚是升序还是降序,这样会给你加分。
下面,我以升序来讲一下它的运作。
- 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
void maopao(int*num,int m){for (int i = 0; i < m-1; i++){cout << "i="<<i << endl;for (int j = 0; j<m -i- 1; j++){if (num[j]>num[j + 1]){int temp;temp = num[j];num[j] = num[j + 1];num[j + 1] = temp;}for (int k = 0; k < m; k++){cout << num[k] << " ";}cout << endl;}} }
二、插入排序
在递增排序中,感觉和冒泡排序法相反,循环时插入排序的左边永远是最小的(左边开始排序);而冒泡排序循环时最大值被派到最右边(右边开始排序)。
1.选择插入点元素
2.插入点元素与其前面每一个元素比较,把最大值往前挪
3.把插入点放到合适位置
4.插入点元素更新,重新循环123步骤
void InsertionSort(int *num, int n){int temp ,i,p;for (int i = 1; i<n; i++){temp = num[i];//从待插入组取出第一个元素。 p = i - 1; //i-1为插入元素的前一个元素的下标while (p>=0 && temp<num[p]) //循环比较排序,注意判断条件为两个,p>=0对其进行边界限制。第二个为插入判断条件 {num[p + 1] = num[p];//若不是合适位置,有序组元素向后移动 p--;}num[p + 1] = temp;//找到合适位置,将元素插入。 }}
三、选择排序
1.从开头遍历,找到最小值并把其下标赋值给min
2.从第二个数开始遍历,找到最小值
每次找到最小值并排序
void SelectionSort(int *num, int n){int min = 0;int j = 0;int tmp ;for (int i = 0; i < n - 1; i++){min = i;//每次讲min置成无序组起始位置元素下标 for (j = i; j < n; j++)//遍历无序组,找到最小元素。 {if (num[min]>num[j]){min = j;}}if (min != i)//如果最小元素不是无序组起始位置元素,则与起始元素交换位置 {tmp = num[min];num[min] = num[i];num[i] = tmp;}}
代码综合:http://download.csdn.net/download/qq_29540745/9966565
阅读全文
0 0
- 三大线性排序
- 三大高级排序
- 三大简单排序
- 三大经典排序
- 三大排序
- 八大排序 三大查找、、
- 三大排序之基数排序
- 三大查找八大排序
- 三大经典排序法
- 三大线性排序之计数排序
- 三大线性排序之桶排序
- 三大排序算法(快速排序,归并排序,堆排序)
- 三大排序:选择排序,冒泡排序,插入排序
- 多线程和八大排序三大查找
- 三大基本排序:选择、冒泡、插入
- 三大线性排序之基数排序
- 【数据结构篇】三大排序图解
- 三大基本排序冒泡、插入、选择
- 大三期末前端页面开发论文
- WinImage 9.0 绿色汉化版
- Eclipse安装svn的几种方式
- 如何将excel中的数据导入到数据库
- 每日AC -数串
- 三大排序
- kafkaclient示例
- 使用注解配置spring
- 常用的十八大学术搜索引擎
- PHP封装的一个单例模式Mysql操作类
- 堆和栈的区别
- Fedora 26 为多种系统提供稳定保障!
- php 常用日期处理函数,时间戳处理函数等,如下讲解
- Jsp+Servlet对数据库的增删改查