选择排序1(每一次选择出一个最小(大)的值交换位置i上)(可能会导致小的交换到了后面) for (int i = 0; i < n; i++){ for (int j = i+1; j < n; j++){ if (a[i]<a[j]){ swap(a[i],a[j]); } } } 选择排序2(每一次选择出一个最小(大)的下标放在位置i上) for (int i = 0; i < n; i++){ int index=i; for (int j = i+1; j < n; j++){ if (a[i]<a[j]){ index = j; } } if(index!=i) { swap(a[i],a[index]); } } 冒泡排序1(从后向前两两比较,小的放在前面,每次最小的放在最前面) for (int i = 0; i < n; i++){ for (int j = n-1; j > i; j--){ if (a[j]>a[j-1]){ swap(a[i],a[j-1]); } } } 冒泡排序2(从后向前两两比较,小的放在前面,每次最小的放在最前面,直到没有元素进行交换) int exc = 1; for (int i = 0; i < n&&exc; i++){ exc = 0; for (int j = n-1; j > i; j--){ if (a[j]>a[j-1]){ swap(a[i],a[j-1]); exc = 1; } } }