자바는 버블 정렬 + 그래픽 버블 정렬 + 코드 구현 + 코드 분석 (Java)을 실현합니다.

기본 소개

버블 정렬의 기본 개념은 정렬 순서를 앞뒤로 처리하고 (작은 첨자가있는 요소에서 시작)
인접한 요소의 값을 차례로 비교 하고 역순이 발견되면 교체하는 것입니다. 값이 큰 요소를 앞쪽에서 뒤쪽으로 서서히 이동하고 물속에 거품처럼 서서히 위로 올라갑니다

여기에 사진 설명 삽입
위의 밤은 그다지 좋지 않기 때문에 코드 분석 섹션에서 새로운 밤을 발견했습니다 (여기의 코드는 정렬 프로세스를 나타냅니다).

package data_structure;

import java.lang.reflect.Array;
import java.util.*;

public class BublleSortTest {
    
    
public static void main(String[] args) {
    
    
	int arr[]={
    
    3,9,-1,19,-2};
	//第一趟排序就是将最大的数排在最后
	int temp=0;//定义临时变量
	for(int i=0;i<arr.length-1;i++) {
    
    			
			if(arr[i] > arr[i+1]) {
    
    
				temp=arr[i];
				arr[i]=arr[i+1];
				arr[i+1]=temp;
			}
		}
	System.out.println("第一次排序后的数组");
	System.out.println(Arrays.toString(arr));
	
	//第二趟排序就是将第二大的数排在倒数第二位
		for(int i=0;i<arr.length-1-1;i++) {
    
    			
				if(arr[i] > arr[i+1]) {
    
    
					temp=arr[i];
					arr[i]=arr[i+1];
					arr[i+1]=temp;
				}
			}
		System.out.println("第二次次排序后的数组");
		System.out.println(Arrays.toString(arr));
		
		
	//第三趟排序就是将第三大的数排在倒数第三位
				for(int i=0;i<arr.length-1-2;i++) {
    
    			
						if(arr[i] > arr[i+1]) {
    
    
							temp=arr[i];
							arr[i]=arr[i+1];
							arr[i+1]=temp;
						}
					}
				System.out.println("第三次排序后的数组");
				System.out.println(Arrays.toString(arr));
				
				//第四趟排序就是将第四大的数排在倒数第四位
				for(int i=0;i<arr.length-1-3;i++) {
    
    			
						if(arr[i] > arr[i+1]) {
    
    
							temp=arr[i];
							arr[i]=arr[i+1];
							arr[i+1]=temp;
						}
					}
				System.out.println("第四次次排序后的数组");
				System.out.println(Arrays.toString(arr));
	}
}

여기에 사진 설명 삽입
여기에 사진 설명 삽입
간단한 분류를 위해 너무 많은 코드를 작성해야한다면, 가랑이를 똑바로 세우고 걸레로 노는 것과 같습니다. 다음으로 코드를 최적화합니다.

package data_structure;

import java.lang.reflect.Array;
import java.util.*;

public class BublleSortTest {
    
    
public static void main(String[] args) {
    
    
	int arr[]={
    
    3,9,-1,19,-2};
	//第一趟排序就是将最大的数排在最后
	int temp=0;//定义临时变量
	for(int i=0;i<arr.length-1;i++) {
    
    
	for(int j=0;j<arr.length-1-i;j++) {
    
    			
			if(arr[j] > arr[j+1]) {
    
    
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	System.out.println("第"+i+"次排序后的数组");
	System.out.println(Arrays.toString(arr));
	}
}
}

분석 :
여기에 사진 설명 삽입
확장 :

{1,2,3,4,5}와 같은 정렬 된 배열이있는 경우 위의 방법으로 작성하면 시간이 크게 늘어납니다 (크기 순서가 작은 배열의 경우). 코드.

package data_structure;

import java.util.*;

public class bolle {
    
    
	public static void main(String[] args) {
    
    
		int arr[] = {
    
     3, 9, 10, 19, 20 };
		
//		System.out.println("排序前");
//		System.out.println(Arrays.toString(arr));
//		
		bublleSort(arr);
//		
//		System.out.println("排序后");S
//		System.out.println(Arrays.toString(arr));
	}
	public static void bublleSort(int[] arr) {
    
    
		int temp = 0;// 定义临时变量
		boolean flag = false;// 标识变量,表示是否进行过交换
		for (int i = 0; i < arr.length - 1; i++) {
    
    
			for (int j = 0; j < arr.length - 1 - i; j++) {
    
    
				if (arr[j] > arr[j + 1]) {
    
    
					flag = true;// 标识变量为真,那么就执行这段代码
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
			System.out.println("第"+i+"次排序");
			System.out.println(Arrays.toString(arr));

			if (flag == false) {
    
    // 在一趟排序中,一次都没交换过
				break;
			} else {
    
    
				flag = false;// 重置flag,进行下一次轮询(判断,循环)
			}
		}
	}
	
}

분석 :
여기에 사진 설명 삽입
여기에 사진 설명 삽입
예를 들어 위의 코드는 이미 정렬되어 있는데 포인터가 각 요소를 가리키고 정렬 된 것을 발견하면 바로 종료됩니다.

추천

출처blog.csdn.net/weixin_46457946/article/details/113059548