冒泡排序 java

冒泡排序理论:

1.也是分为有序区和无序区,有序区是每一趟产生一个,在结尾处
2.两两(i和i+1)之间进行比较,把大的内容交换到i+1位置处
3.也是需要进行n-1躺
4.需要比较n次,并且需要n躺,所以时间复杂度也是n^2

java代码:

package lianxi;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

class SelectionSort{


private final int SIZE = 10; // 定义排序序列的长度。调试阶段可以把这个值调小以方便调试。
private final int MAX = 10; //定义排序序列的最大值

public static void main(String[] args){//主函数入口				选择排序
	SelectionSort ss = new SelectionSort();		//创建对象
	List<Integer> data = ss.dataGenerator();
	// 把数字打印出来可以帮助调试程序
	System.out.print(" 未排序前: ");
	ss.print(data); 
	ss.sort(data);
	System.out.print(" 排序后: ");
	ss.print(data);
	if(ss.test(data)){
		System.out.println(" 排序成功 !");
	}
	else{
		System.out.println(" 排序不成功 !");
	}
	
}

/*
数据生成函数
*/
public List<Integer> dataGenerator(){
	List<Integer> data = new ArrayList<Integer>();
	Random generator = new Random(System.currentTimeMillis());//获取系统时间
	for(int i = 0; i < SIZE; i++){
		data.add(generator.nextInt(MAX));//长度小于我们设置的长度时往data数组中添加数据
	}
	return data;
}

/*
测试排序结果是否正确
*/
public boolean test(List<Integer> nums){
	for(int i = 0 ; i < SIZE - 1; i++){//检查i和i+1是否递增
		if(nums.get(i) > nums.get(i+1)){
			return false;
		}
	}
	return true;
}

/*
打印排序的序列
*/
public void print(List<Integer> nums){
	System.out.println(" ");
	for(int i = 0; i < SIZE; i++){
		System.out.print(nums.get(i)+ " ");//根据数组下标分别空一格输出内容
	}
	System.out.println(" ");
}

/*
冒泡排序的实现
*/
public List<Integer> sort(List<Integer> nums){
	for(int j=1;j<SIZE-1;j++){			//控制冒泡所需的躺数
		for(int i=0;i<SIZE-1;i++){			//控制交换的次数
			int jiaohuan;				
				if(nums.get(i)>nums.get(i+1)){		//交换内容
					jiaohuan = nums.get(i);
					nums.set(i,nums.get(i+1));
					nums.set(i+1,jiaohuan);
				}
			}
	}
		
	return nums;
}

}
posted @ 2021-03-26 11:20  网抑云黑胶SVIP用户  阅读(98)  评论(0编辑  收藏  举报