--- title: 排序算法 published: 2025-09-21 description: '' image: '' tags: [] category: '数据结构与算法' draft: false lang: '' --- # 冒泡排序 ![](https://blog.meowrain.cn/api/i/2025/09/21/12fnqrb-1.webp) 算法复杂度: O(n^2) 稳定性: 是稳定排序算法,相等的元素不会变换位置 ```go package main import "fmt" func main() { var n int fmt.Scan(&n) arr := make([]int,n) for i:= range arr { fmt.Scan(&arr[i]) } bubbleSort(arr) for i,v := range arr { if i > 0 { fmt.Print(" ") } fmt.Print(v) } } func bubbleSort(arr []int) { n := len(arr) for i:=0;i arr[j + 1] { arr[j],arr[j + 1] = arr[j + 1],arr[j] } } } } ``` ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for(int i = 0;i= 基准 基准本身位于最终的正确位置 ```go package main import "fmt" func main() { var n int fmt.Scan(&n) arr := make([]int,n) for i:= range arr { fmt.Scan(&arr[i]) } quickSort(arr,0,len(arr) - 1) } func quickSort(arr []int,low int,high int) { if low < high { pi := partition(arr,low,high) quickSort(arr,low,pi - 1) quickSort(arr,pi + 1,high) } } func partition(arr []int,low int,high int) int { pivot := arr[high] i := low - 1 for j := low;j < high;j++ { if arr[j] <= pivot { i++ arr[i],arr[j] = arr[j],arr[i] } } arr[i + 1],arr[high] = arr[high],arr[i + 1] return i + 1 } ```