排序算法(三)直接选择排序(Straight Select Sorting)
来源:互联网 发布:sip服务器 linux 编辑:程序博客网 时间:2024/06/07 12:23
直接选择排序(Straight Select Sorting)
介绍
简单选择排序是最简单直观的一种算法,基本思想为每一趟从待排序的数据元素中选择最小(或最大)的一个元素作为首元素,直到所有元素排完为止。
过程动画:
直接选择排序代码实现(java)
public static int[] StraightSelectSort(int [ ] array) { //N个数组元素,就需要循环N轮 for(int i = 0; i < array.length-1; i++){ //最小数的索引,该索引每次都根据外层循环的计数器来觉得初始值。 int minIndex = i; for (int j = i + 1; j < array.length; j++) { //根据最小数的索引,判断当前这个数是否小于最小数。 //如果小于,则把当前数的索引作为最小数的索引。 //否则不处理。 if(array[minIndex] > array[j]){ minIndex = j; } //直到循环完成的时候,minIndex肯定就是当前这轮循环中,最小的那个。 } //System.out.print(i + "轮,最小数" + array[minIndex] + ","); //System.out.print("原索引" + minIndex + ",新索引" + i); //得到最小数的索引后,把该索引对应的值放到最左边,并且把最左边的值放到索引所在的位置. //最左边的值 int temp = array[i]; //把最小数索引对应的值放到最左边 array[i] = array[minIndex]; //把原来最左边对应的值放到最小数索引所在的位置 array[minIndex] = temp; } return array; }
性能分析
时间复杂度:对于交换操作,在最好情况下也就是数组完全有序的时候,无需任何交换移动,在最差情况下,也就是数组倒序的时候,交换次数为n-1次。综合下来,时间复杂度为O(n2)
稳定性:由于在直接选择排序中存在着不相邻元素之间的互换,因此,直接选择排序是一种不稳定的排序方法。
空间复杂度: O(1)
阅读全文
0 0
- 排序算法(三)直接选择排序(Straight Select Sorting)
- 排序(三)之直接插入排序Straight Insertion Sort
- 直接选择排序(Straight Selection Sort)--学习(五)
- 【内部排序】一:直接插入排序(Straight Insertion Sorting)的多种实现(不断优化+源码)
- 排序算法之三--直接选择排序
- 直接插入排序算法(Straight Insertion Sort) Java实现
- 排序算法之——直接选择排序(三)
- 直接插入排序(Straight Insertion Sort)
- 直接插入排序(Straight Insertion Sort)
- 直接插入排序(Straight Insertion Sort)
- 八大排序算法_直接插入排序(Straight Insertion Sort)
- 排序(三):直接选择排序
- 排序算法之 直接插入排序算法(Straight Insertion Sort):(Python)
- 排序算法(二):直接选择排序
- PHP实现排序算法----直接插入排序(Straight Insertion Sort)
- PHP实现排序算法----直接插入排序(Straight Insertion Sort)
- 算法分析-选择排序(直接选择排序 & 堆排序)
- 算法-排序-选择排序(直接选择和堆排序)
- 《机器学习实战》学习笔记(二)之决策树(下)决策树可视化、存储分类器以及隐形眼镜实例
- EnhancedFor
- 流媒体通信协议HLS与DASH的对比
- iptables基础用法介绍
- cookie
- 排序算法(三)直接选择排序(Straight Select Sorting)
- JsonObject取key值
- C#高级学习第三章LINQ
- UVA 10820——Send a Table(欧拉函数)
- 任学堂---Are you OK?成病毒 电脑中招后满屏生成小米logo
- Android控件架构与控件绘制
- 编译hadoop2.6.0-cdh5.7.0 native支持snappy & 编译中遇到的坑及解决办法
- MAAS+JUJU+CONJURE-UP全自动部署OPENSTACK
- tab标签切换