java基础 选择排序、冒泡排序、折半查找法

1、选择排序


选择排序,逐次选择最大的或是最小的元素,放到起始位置或是末尾位置,直到排序完成

package sort;
//选择排序
/**
 * 选择排序
 * 在未排序的数组中找到最大或最小的,存放在起始位置;
 * 再从剩余的未排序元素中寻找最大或最小的,然后放在末尾位置;
 * 以此类推,直到所有元素均排序完毕;
 * @author 空空
 *
 */
public class ChoiceSort {
	public static void main(String[] args){
	    int data[] = { 2, 10, 7, 19, 30, 17, 22, 5, 8, 1 }; 
	    int i,j,k,temp = 0;
	    for(i = 0;i < data.length;i++){
	    	k = i;
	    	for(j = i + 1;j < data.length;j++){
	    		if(data[j] < data[k]){
	    			k = j;
	    		}
	    		if(k != i){
	    			temp = data[i];
	    			data[i] = data[k];
	    			data[k] = temp;
	    		}
	    	}
	    }
	    for(int num:data){
	    	System.out.print(num+",");
	    }
	}  
}  
2、冒泡排序

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,根据大小比较相邻的两个元素,如果他们的顺序不符合要求就把他们交换过来,直到目标数组排序结束。

package sort;
//冒泡排序
/**
 * 比较目标数据中相邻的两个元素,如果大小位置不符,则交换位置;
 * 逐次进行,直到排序完成
 * @author 空空
 *
 */
public class BubbleSort {
	public static void main(String[] args){
		int[] data = {2,10,5,3,15,22,17,33,21};
		for(int i = 0;i < (data.length-1)/2;i++){
			for(int j = 0;j < data.length-1;j++){
				if(data[j] > data[j+1]){
					int temp = data[j];
					data[j] = data[j+1];
					data[j+1] = temp;
				}
			}
		}
		for(int num:data){
			System.out.print(num+",");
		}
	}
}

3、折半查找法

package sort;
	/**
	 * 必须采用顺序存储结构
	 * 必须按关键字大小有序排列
	 * @author 空空
	 *
	 */
	public class TestBinarySearch {    
	    public static int binarySearch(int a[],int num){  
	        int last = a.length - 1;  
	        int first = 0;  
	        while (first <= last) {  
	            int middle = (first + last)/2;  
	            if (a[middle] == num) {  
	                return middle;  
	            }  
	            else if (a[middle] > num) {  
	                last = middle - 1;  
	            }  
	            else {  
	                first = middle + 1;  
	            }  
	        }  
	        return -1;    
	    }  
	    /**
	     * 数组查找
	     * 确定中间位置
	     * 查找目标元素,返回相应的下标位置
	     * @param args
	     */
	    public static void main(String[] args) {   
	        int[] src = {7,14,18,21,23,29,31,35,38,42};  
	        System.out.println(binarySearch(src, 23));   
	    }
	} 


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值