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

常见的一些内部排序算法

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

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

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]+" ");
		}
		
	}
	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值