Java常见排序:(一)直接选择排序

来源:互联网 发布:网易泡泡堂mac 编辑:程序博客网 时间:2024/05/16 05:37

常见的一些内部排序算法

排序:常见的也是基础的一些算法。

评价排序算法优劣的标准:

1.      时间复杂度:主要是分析关键字的比较次数和记录的移动次数。

2.      空间复杂度:分析排序算法中需要多少辅助内存。

3.      稳定性:如果两个记录A和B的关键字值是相同的,但是排序后A、B的先后顺序保持不变,则称之为算法是稳定的;反之就是不稳定的。

 

就现在的排序算法来看,排序大致可以分为内部排序和外部排序。如果整个排序的过程不再借助外部的存储器(如磁盘),所有的排序操作都是在内存中完成的,这样的排序就是内部排序。

如果参与排序的数据量非常的大,排序过程中可能无法将整个排序过程放在内存中完成,必须借助于外部存储器(如磁盘),这样的排序就是外部排序。对于外部排序最常见的算法就是多路归并排序,即是将原文件分解为多个能够一次性装入到内存的部分,分别把每一部分调入内存中完成排序,接下来在对多个有序文件进行归并排序。

内部排序:可以使用非常简单的排序算法来完成,如直接选择、直接插入等,但是也有一些优秀、复杂的排序算法,如快速排序、基数排序等。


这一系列的文章会将上述的十种排序。

1.      直接选择排序:

思路简单,n个数据需要n-1趟比较。以从小到大排序,每次一个与后面的比较如果大于就交换。

直接选择排序[时间复杂度:O(n2)、空间复杂度:O(1)、不稳定]

选择排序的具体实现:

package com.wpl.mysort;/* * 实现选择排序 * */public class SelectSort {//实现选择排序,实现从小到大的输出哈!public static void mySelectSort(int []inputdata){for(int i=0;i<inputdata.length-1;i++){int minData=inputdata[i];for(int j=i+1;j<inputdata.length;j++){if(inputdata[j]<minData){int temp=inputdata[j];inputdata[j]=minData;minData=temp;}}inputdata[i]=minData;}}public static void main(String[] args) {int []test={23,2,34,8,34,28,98,89,13,8,33,56,75,67};mySelectSort(test);for(int i=0;i<test.length;i++){System.out.print(test[i]+" ");}}}


0 0
原创粉丝点击