排序算法

  冒泡排序:比较相邻的两个元素,如果第一个比第二个大,就交换他们两个。一遍循环下去,最后的元素就是最大的值,最大的沉了下去,依次直到,沉到第一个。

  算法代码:

public static void bubblesort(int[] s){
		for(int i = 0;i <s.length;i++){
			for(int j = 0;j<s.length-i-1;j++){
				if(s[j]>s[j+1]){
					int temp = s[j];
					s[j] = s[j+1];
					s[j+1] = temp;
				}
			}
		}
	}

  选择排序思想:第一次在未排序序列中找到最小元素,与第一个交换位置,第二次再从未排序序列(即除去第一个之外的)找到最小的,与第二个交换位置,以此类推,直到结束。

算法代码:

public static void chooseSort(int[] s){
		for(int i = 0;i<s.length;i++){
			//标记
			int k  = i;
			for(int j = s.length-1;j>i;j--){
				//找到剩余中最小的
				if(s[k]>s[j]){
					k = j;
				}
			}
			//完成交换
			int temp =  s[i];
			s[i] = s[k];
			s[k] = temp;
		}
	}
  插入排序:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后面向前找到合适位置后),直到全部插入排序完为止。

算法代码:

public static void insertSort(int[]array){
		 if (array == null || array.length < 2) {  
	            return;  
	        }  
	  
	      for(int i = 1;i<array.length;i++){
	    	  //保存当前的值
	    	 int currentValue = array[i];
	    	 int position = i;
	    	 //从后向前查找位置,边查找边移动,如果array[j]大于current值,则就将array[j+1]赋值为array[j],哨兵前移一位
	    	 for(int j = i-1;j>=0;j--){
	    		 if( array[j]>currentValue){
	    			 array[j+1] = array[j];
	    			 position-=1;
	    		 }else{
	    			 break;
	    		 }
	    	 }
	    	 array[position] =  currentValue;
	      }
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值