第二篇关于排序的 依然是交换类的排序 --冒泡排序 (相邻比序法)
数据结构的时候学过 现在比较喜欢写博客 虽然简单基础 但是还是写于此
冒泡排序基本思想就是 :反复扫描待排序的数组 ,在扫描的过程中顺次比较相邻的两个元素的大小,若逆序则交换位置
上代码:
/**
* 标志性的两层循环 第二层循环是确定排序的数组范围 ,所以第一层循环每一轮都是将第二层确定的范围中最大的数移到最后
*
* 第一层循环次数是 length-1 第二层循环次数是 length-1-i
*
* @author laowang
*/
public class Test {
private static int[] data;
/**
* 冒泡排序 未 精简版 此时比较次数仍然是n*(n-1)/2,所以时间复杂度仍是O(n^2),失败的算法
*/
public static void Sort_Bad() {
int temp; // 坚决不能定义在for循环内部 ,会加大空间复杂度
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i; j++) {
if (data[j] > data[j + 1]) {
temp = data[j];
data[j] = data[j + 1];
data[j + 1] = t