排序算法
2015-10-28 15:22
253 查看
选择排序
简介:
选择排序(Selection sort)是一种简单直观的排序算法。基本思想:
1、选择一个元素与其之后的元素进行比较,选出最小值。2、对剩下的元素重复第一步。
demo:
#include <iostream> #include <algorithm> using namespace std; void Merge(int src[], int des[], int low, int mid, int high) { int lowIndex = low; int midIndex = mid + 1; int desIndex = low; while ((lowIndex <= mid) && (midIndex <= high)) //选择大的元素放入 src[lowIndex] < src[midIndex] ? des[desIndex++] = src[lowIndex++] : des[desIndex++] = src[midIndex++]; while (lowIndex <= mid) //将剩下的元素放入 des[desIndex++] = src[lowIndex++]; while (midIndex <= high) des[desIndex++] = src[midIndex++]; } void Msort(int src[], int des[], int low, int high, int max) { if (low == high) des[low] = src[low]; else { int mid = (low + high) >> 1; int *space = (int *)malloc(sizeof(int)* max); if (space != NULL) { Msort(src, space, low, mid, max); Msort(src, space, mid + 1, high, max); Merge(space, des, low, mid, high); } free(space); } } int MergeSort(int array[], int len) { if (array == NULL) return -1; Msort(array, array, 0, len - 1, len); return 0; } int main() { int array[] = { 52, 23, 80, 36, 68, 14 }; MergeSort(array, sizeof(array) / sizeof(*array)); for_each(begin(array), end(array), [](int data){cout << data << " "; }); system("pause"); }
View Code
相关文章推荐
- 集成百度地图
- 静态页编写标准及要求
- 日常收集整理php正则表达式(超常用)
- HTTPS的工作原理
- 基于xcodebuild和xcrun的自动化打包
- VS2008编译驱动环境配置
- iOS之工具类---常见的5页导航控制页面(附带侧边控制器和主题管家类)
- Spring mvc中@RequestMapping 6个基本用法小结
- 通过Df-h发现有个硬盘占用率是100%,但是你在它挂载的分区看du,发现只占用了50%,
- Windows程序调试系列: 使用VC++生成调试信息
- 机器语言、汇编语言、高级语言
- 比特币是什么?
- Linux书籍
- If...Else 和Switch 判断语句的使用
- Eclipse中SVN过滤指定文件夹或文件下内容
- Android 应用程序发布流程---碗豆荚发布流程
- MySQl时间函数
- uva253
- 一看就会Android之Socket通信时总是通信失败的几点原因分析(超实用)
- RabbitMQ