java的冒泡排序法,选择排序法,为使用二分查找法做铺垫的两种常用排序方法,

很多地方都用到了排序,这里将两个比较常用的方法记录下

 

 

冒泡排序法:

原理:比较两个相邻的元素,将值大的元素交换至右端。直接上代码了

public class MaoPDemo02 {

	public static void main(String[] args) {
		/*
		 *  冒泡排序法的应用
		 * 比较两个相邻的元素,将值大的元素交换至右端。(升序)
		 */
		int [] num = {9,10,4,5,7,8,6};
		System.out.println("排序前");
		for(int n : num) {
			
			System.out.print(n+",");
			
		}
		
		for(int i =0;i<num.length-1;i++) {//外层循环决定比较的回合数
			
			for(int j =0;j<num.length-1-i;j++) {//内存循环决定每一回合的比较次数
				
				if(num[j]>num[j+1]) {
					int min=0;
					 min=num[j+1];
					num[j+1]=num[j];
					num[j]=min;
					
				}
				
			}
    }
		System.out.println();
		System.out.println("冒泡排序后");
		for(int n : num) {
			
			System.out.print(n+",");
			
		}
		
		
		
		
	}

}

选择排序法

每一回从要排序的结果中选出最小/大的元素,顺序放在已排好序的序列最后/前,直到全部记录排序完成,

public class SelectedDemo {

	public static void main(String[] args) {
		/*
		 * 选择排序法的应用(升序)
		 * 
		 */
		
		
		int [] num = {9,10,4,5,7,8,6};
		System.out.println("排序前");
		for(int n : num) {
			
			System.out.print(n+",");
			
		}
		
		for(int i =0;i<num.length-1;i++) {
			
			int min =i;//在数组下标为i的位置找一个默认最小的,准备放到数组最左边
			
			for(int j =min+1;j<num.length;j++) {
				
			
				if(num[j]<num[min]) {
					
					min=j;//右边比左边小 记录下标
					
				}
				if(i!=j) {//通过记录的下标进行下标元素互换(满足内层条件)
					
					int nul =num[i];
					num[i]=num[min];
					num[min]=nul;
					
				}
				
			}
			
		}
		System.out.println();
		System.out.println("顺序排序后");
		for(int n : num) {
			
			System.out.print(n+",");
			
		}
		
		
		
		
	}

}
发布了22 篇原创文章 · 获赞 0 · 访问量 382

猜你喜欢

转载自blog.csdn.net/weixin_44657829/article/details/104830047
今日推荐