ArrayList 实现冒泡排序

xiaoxiao2021-02-28  184

public class TestArrayListSort { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); // System.out.println("请输入int类型数(如需退出请按0):"); // Scanner s = new Scanner(System.in); // int nextInt = s.nextInt(); // while(nextInt!=0) { // list.add(nextInt); // } // s.close(); // System.out.println("排序之前的序列:"); // System.out.print(list); list.add(5); list.add(4); list.add(8); list.add(6); // 冒泡算法 System.out.println("没有排序前的顺序为:"); int size = list.size(); for (int i = 0; i < size; i++) { Integer integer = list.get(i); System.out.print(integer+ " "); } // 冒泡排序 System.out.println(); System.out.println("排序之后为:"); for (int i = 0; i < size-1; i++) {// ---》for循环选取第一个数 for (int j = 0; j < size-1-i; j++) {// 原数组中,取出第一个数之后,相邻的另外一个数 //比较两个整数的大小 if (list.get(j)>list.get(j+1)) { Integer temp = list.get(j); // 使用list集合的set方法,找到位置并将数字赋值到该位置 list.set(j, list.get(j+1)); list.set(j+1,temp); } } } System.out.println(list); // for (Integer s : list) { // System.out.print(s); // } } }

其实我所疑问的就是下图箭头部分所指出的内容; 正如图片中所显示的一样:

第一个for循环list集合数组中的某一个数,而第二个for循环则是遍历除了该list数组中的第二个数。但是这第二个数是与第一个数相邻,可能第一个数的前一个数,也可能是后一个数。我这里取用第二个数为第一个数后面的那个数字。然后使用 if 语句比较两个数的大小,把大的换到后一个位置上,小的放在前一个位置上。
转载请注明原文地址: https://www.6miu.com/read-43444.html

最新回复(0)