直接选择排序
来源:互联网 发布:花生壳远程监控软件 编辑:程序博客网 时间:2024/05/25 23:57
选择排序算法就是每一趟从待排序的记录中选出关键字最小(最大)的记录,顺序放在已排好序的子文件的最后(最前),直到全部记录排序完毕。常见的选择排序有直接选择排序(Selection Sort),堆排序(Heap Sort),平滑排序(Smooth Sort),笛卡尔树排序(Cartesian Sort),锦标赛排序(Tournament Sort),循环排序(Cycle)。
1、直接选择排序
直接选择排序(Selection Sort),这是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序的序列元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素排序完毕。
2、排序性能
最差时间复杂度:O(n^2)
最优时间复杂度:O(n^2)
平均时间复杂度:O(n^2)
稳定性:不稳定
3、算法示意图:
4、实现代码:
void SetectSort(int *arr, int len){ if (NULL == arr) { return; } for (int i = 0; i < len - 1; i++)//遍历整个数组 { int k = i;//创建临时变量存储要选择排序的最小数的下标 int key = arr[i];//创建临时变量存储要排序的最小数 for (int j = i + 1; j < len; j++) { //求出最小数和下标 if (arr[j] < key) { k = j; key = arr[j]; } } if (k != i)//避免数字自己与自己比较 { //交换 int tmp = 0; tmp = arr[i]; arr[i] = arr[k]; arr[k] = tmp; } }}
5、程序
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<stdlib.h>void SetectSort(int *arr, int len){ if (NULL == arr) { return; } for (int i = 0; i < len - 1; i++)//遍历整个数组 { int k = i;//创建临时变量存储要选择排序的最小数的下标 int key = arr[i];//创建临时变量存储要排序的最小数 for (int j = i + 1; j < len; j++) { //求出最小数和下标 if (arr[j] < key) { k = j; key = arr[j]; } } if (k != i)//避免数字自己与自己比较 { //交换 int tmp = 0; tmp = arr[i]; arr[i] = arr[k]; arr[k] = tmp; } }}void test3(){ int arr[] = { 2,3,1,6,4,5 }; int len = sizeof(arr) / sizeof(arr[0]); SetectSort(arr, len); for (int i = 0; i < len; i++) { printf("% d", arr[i]); } printf("\n");}int main(){ test3(); system("pause"); return 0;}
运行结果为:
阅读全文
0 0
- 选择排序-直接选择
- 【排序】直接选择排序
- 【排序】直接选择排序
- 【排序】直接选择排序
- 选择排序--直接选择排序
- 选择排序 - 直接选择排序
- 选择排序-直接选择排序
- 选择排序-直接选择排序
- 直接选择排序
- 直接选择排序
- 直接选择排序
- Java 直接选择排序
- 直接选择排序举例
- 直接选择排序
- 直接选择排序算法
- 直接选择排序
- 直接选择排序
- 直接选择排序
- ionic综合+首页右上角点击进入包含一个轮播+进入后显示选项左上角有一个后退按钮每个选项包含内容
- Windows搭建Python开发环境
- koa之处理器模块化
- gif图像分解、gif图像制作
- MVP 模式简单易懂的介绍方式
- 直接选择排序
- fastdfs分布式文件系统之JAVA client工具类封装
- 两个栈实现队列
- Atitit 人工智能目前的进展与未来 包含的技术 v2 r99.docx
- Weex的环境搭建及集成到Android Studio和趟过的坑
- Atitit 常用数据校验规则
- Android 启动活动的最佳写法
- Atitit 签名规范 attilax总结 安全签名规范 v2 r99.docx
- PTA 计算高考状元