排序2——选择排序及优化
来源:互联网 发布:sql where and 编辑:程序博客网 时间:2024/06/05 20:57
二、选择排序
1、未经优化的选择排序
import java.util.Scanner;public class Test{//定义数组的最大长度static final int num=100;//选择排序public static void SelectSort(int[] arr,int length){int temp; //临时变量for(int i=1;i<length;i++){for(int j=i+1;j<=length;j++){//在符合该条件的情况下,每次都要进行交换if(arr[i]>arr[j]){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}}public static void main(String[] args) {int[] arr=new int[num];Scanner in=new Scanner(System.in);System.out.println("请输入数组中的元素个数(<=100):");int length=in.nextInt();System.out.println("输入数组中的元素:");for(int i=1;i<=length;i++){arr[i]=in.nextInt();}//调用排序方法对数组进行排序SelectSort(arr, length);System.out.println("排序后的数组:");for(int i=1;i<=length;i++){System.out.print(arr[i]+" ");}}}
运行结果 :
请输入数组中的元素个数(<=100):
10
输入数组中的元素:
23 34 56 76 33 11 22 33 55 77
排序后的数组:
11 22 23 33 33 34 55 56 76 77
这种方法的缺点是:在一轮比较的过程中,每次遇到if条件成立时都要进行交换。
解决方案:在一轮比较的过程中,只需记录下标即可,在一轮比较完成后再进行交换。
2、优化后
import java.util.Scanner;public class Test{//定义数组的最大长度static final int num=100;//选择排序public static void SelectSort(int[] arr,int length){for(int i=1;i<length;i++){int minIndex=i;for(int j=i+1;j<=length;j++){if(arr[j]<arr[minIndex]){//只需记录下标的变化minIndex=j;}}//在一轮比较完成后再进行交换if(minIndex!=i){int temp=arr[i];arr[i]=arr[minIndex];arr[minIndex]=temp;}}}public static void main(String[] args) {int[] arr=new int[num];Scanner in=new Scanner(System.in);System.out.println("请输入数组中的元素个数(<=100):");int length=in.nextInt();System.out.println("输入数组中的元素:");for(int i=1;i<=length;i++){arr[i]=in.nextInt();}//调用排序方法对数组进行排序SelectSort(arr, length);System.out.println("排序后的数组:");for(int i=1;i<=length;i++){System.out.print(arr[i]+" ");}}}
时间复杂度:O(n^2)
稳定性:不稳定
阅读全文
0 0
- 排序2——选择排序及优化
- 选择排序及优化
- 排序(2)——插入/希尔/选择/快速排序及优化
- 排序(2)——选择排序及其优化
- 排序—选择排序
- 排序—选择排序
- 优化的选择排序——SelectionSortSecond
- 选择排序实现及优化--python
- 排序算法2——选择排序
- C语言冒泡排序及选择排序优化<代码>
- 插入排序,选择,冒泡,快速排序算法及优化
- 排序算法(四)选择排序及优化版本
- 排序算法(二)选择排序解法及优化
- 算法之旅——冒泡排序及选择排序
- 排序算法(二)——选择排序及改进
- 排序算法(二)——选择排序及改进
- 排序算法(二)——选择排序及改进
- 排序——选择排序
- SpringMVC入门
- POI 的全部操作大全
- python字符串语法
- C++11新标准constexpr关键字
- JS获取上一访问页面URL地址——(上)
- 排序2——选择排序及优化
- 存储技术SAN、NAS、NFS、DAS、RAW、文件系统、ASM、Exadata、HDFS、LVM、RAID、LUN、Samba
- 基于item协同过滤算法实现
- ViewPager的刷新以及复用
- tomcat7.x 点击\bin\tomcat7.exe一闪而过,点击tomcat7w.exe提示未安装服务
- 《所谓情商高就是会说话》
- vue的学习记录--环境配置
- HDU 4686(矩阵快速幂)
- TI DSP C64X 优化基本方法