直接选择排序
来源:互联网 发布:淘宝权限管理 编辑:程序博客网 时间:2024/06/08 16:48
直接选择排序算法对待排序的记录进行n-1次选择,第i次操作选择第i大的记录放在第i个位置上。即每次都将一个记录放在他的最终位置上。
#include<stdio.h>void selectSort(int *array, int n) { int i, j, m, a; for (i = 0; i < n - 1; i++) { m = i; for (j = i + 1; j < n; j++) { if (*(array + j) < *(array + m)) m = j; } if (m != i) { a = *(array + m); *(array + m) = *(array + i); *(array + i) = a; } }}void main() { int i; int array[10] = { 12,2,37,34,90,82,23,46,21,9 }; printf("待排序数组:"); for (i = 0; i < 10; i++) printf("%d ", *(array + i)); getchar(); selectSort(array, 10); printf("\n直接选择排序后的数组为:"); for (i = 0; i < 10; i++) printf("%d ", *(array + i)); printf("\n\n");}
时间复杂度:选择排序最大的优点就是赋值次数少。直接选择排序中,所需进行记录移动的操作次数较少,最小值是0,最大值是3(n-1)/2。无论初始排列如何,需要进行的关键字的比较次数是相同的,都是n(n-1)/2。总的时间复杂度也是O(n^2)。
空间复杂度:直接选择排序是就地排序,空间复杂度是O(1)。
稳定性:不稳定。
改进:选择排序的主要操作是进行关键字的比较,因此改进直接选择排序应该考虑如何减少比较次数,基于以上思想提出了树形选择排序算法和堆排序算法。
0 0
- 选择排序-直接选择
- 【排序】直接选择排序
- 【排序】直接选择排序
- 【排序】直接选择排序
- 选择排序--直接选择排序
- 选择排序 - 直接选择排序
- 选择排序-直接选择排序
- 选择排序-直接选择排序
- 直接选择排序
- 直接选择排序
- 直接选择排序
- Java 直接选择排序
- 直接选择排序举例
- 直接选择排序
- 直接选择排序算法
- 直接选择排序
- 直接选择排序
- 直接选择排序
- c++第五次作业
- jQuery介绍篇
- Java实现把正整数分解为质因数的乘积
- 一个统计单词的程序
- <UE4>分析UObjectBase
- 直接选择排序
- C# WinForm开发系列之chart控件画折线图和柱形图并自定义鼠标移动到数据标记点显示提示信息
- 跟我学JavaScript--HTML DOM--节点,DOM对象方法,DOM对象属性
- linux 安装ntfs-3g
- Leetcode算法练习-easy篇-Roman to Integer
- 多表连接查询
- poj 2387(Dijkstra优先队列优化)
- 一个工厂模式的浅析
- java笔记---常用的API