排序算法之冒泡排序【java实现】

冒泡排序介绍

基本思想就是相邻数据交换,每次将最大或最小的数进行移动。

步骤:(1)对数组中的各数据,依次比较相邻的两个元素的大小。

           (2)如果前面的数据大于(小于)后面的数据,就交换这两个数据。经过第一轮的多次比较排序后,便可以将最小                            (大)的数据排好。

            (3)再用同样的方法把剩下的数据逐个进行比较,最后便可按照小到大的顺序排好数组各数据。

下面是代码:每次将最大的数冒泡到后面,每排好一个数,里层for循环都-i,也就是不再查看已经排好的数据,优化代码时长。

package zhgyu.sort;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 冒泡排序
 * @author zhgyu
 *
 */
public class BubbleSort {

	public static  ArrayList<Integer> bubbleSort(ArrayList<Integer> list) {
		
//		int num  = 0;
		
		for(int i = 0; i < list.size()-1; i++) {
			//冒泡到后面的数不用再次遍历,节省时间
			for(int j = 0; j <list.size() - 1 - i; j++) {
				
				if(list.get(j) > list.get(j+1)) {
					//替换
					int temp = list.get(j);
					//使用list集合的set方法,找到位置并将数字赋值到该位置
					list.set(j, list.get(j+1));
					list.set(j+1, temp);
				}
			}
		}
		return list;
	}

	public static void main(String[] args) {
		//利用动态数组
		ArrayList<Integer> list = new ArrayList<>();
		Scanner s = new Scanner(System.in);
		

		while(true) {
			System.out.println("请输入数字(输入0结束输入):");
			int num = s.nextInt();
			if(num == 0) {
				break;
			}
			list.add(num);
		}
		System.out.println("结束输入!");
		//冒泡排序算法
		list = bubbleSort(list);
		//遍历排序后的数组
		System.out.println("排序后的list:");
		for(int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		
		
/*		for(Integer i: list) {
			System.out.println(i);
		}*/

	}
}

猜你喜欢

转载自blog.csdn.net/qq_40702130/article/details/82994238