java 数据结构之选择排序和插入排序

一    选择排序:

因为冒泡排序,感觉没必要写,因为大家应用的基本就是它,所以我今天谈谈选择排序,选择排序属于较为简单的排序方法为基本应必须掌握的排序方法。选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

 上图是我理解的基本选择排序的流程。我觉得跟冒泡有异曲同工之处。

/*
	 *  选择排序
	 */
	public static<T extends Comparable<T>> void selectSort(T[] arr){
	if(arr==null ||arr.length==0){     //安全判断
		return ;
	}
		int minIndex=0;        //定义最小值
		for(int i=0;i<arr.length-1;i++){   //最小值下标的后移
			minIndex=i;
			for(int j=i+1;j<arr.length-1;j++){
				if(arr[j].compareTo(arr[minIndex])<0){
					minIndex=j;    //记录最小值的下标
				}
			}
			   T temp=arr[i];        //值的交换
			   arr[i]=arr[minIndex];
			   arr[minIndex]=temp;
		}
	}

 

二     插入排序:

     插入排序也是比较实用的排序方法,插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

 上图是我所理解的插入排序的流程。

/*
	 * 插入排序 
	 */
	   public static<T extends Comparable<T>> void insertSort(T[] arr){
		   if(arr ==null || arr.length<2){    //安全处理
			   return ;
		   }
		   for(int i=1;i<arr.length-1;i++){  //从下标为1开始,后面的插入
			   for(int j=i;j>0;j--){      //数数列
				   if(arr[j].compareTo(arr[j-1])<0){  //找到合适位置插入
					   T temp=arr[j];
					   arr[j]=arr[j-1];
					   arr[j-1]=temp;
				   }else{
				   break;     //如果不用移,跳出循环。
			   }
			}
		   }
	   }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值