冒泡排序

public static int[] BubbleSort(int[] array)
{
    int length = array.Length;
    for (int i = 0; i <= length - 1; i++)
    {
        for (int j = length - 1; j > i; j--)
        {
            if (array[j] < array[j - 1])
            {
                int temp = array[j];
                array[j] = array[j - 1];
                array[j - 1] = temp;
            }
        }
    }
    return array;
}

http://www.oschina.net/code/snippet_104837_1490  上面代码来自于

假如有数组如下

7,6,5,4,3,2,1

按照上面代码执行:

7,6,5,4,3,1,2

7,6,5,4,1,3,2

7,6,5,1,4,3,2

7,6,1,5,4,3,2

7,1,6,5,4,3,2

1,7,6,5,4,3,2

从最后一个开始比较,比较次数是数组长度7-1=6,较小的放在左边,然后最后将最小的1放在了最左边

所以第二次开始比较,因为最小的已经在最左边,所以需要比较的只剩下7,6,5,4,3,2,比较次数是数组长度6-1=5


1,7,6,5,4,2,3

1,7,6,5,2,4,3

1,7,6,2,5,4,3

1,7,2,6,5,4,3

1,2,7,6,5,4,3

第二小的已经在左边适当的位置了,

第3次比较,剩下需要比较的是7,6,5,4,3需要比较的次数是数组长度5-1=4


1,2,7,6,5,3,4

1,2,7,6,3,5,4

1,2,7,3,6,5,4

1,2,3,7,6,5,4

第4次比较,因为第3小已经被安排在适当的位置,剩下需要比较的数组是7,6,5,4

比较次数是数组长度4-1=3次

1,2, 3,7,6,4,5

1,2,3,7,4,6,5

1,2,3,4,7,6,5


第5次比较,因为4已经被安排在适当的位置,剩下需要比较的数组是7,6,5

所以比较的次数是数组长度3-1=2

1,2,3,4,7,5,6

1,2,3,4,5,7,6


第6次比较,因为5已经被安排在适当 的位置,剩下需要比较的数组是7,6

所以比较的次数是数组长度2-1=1

1,2,3,4,5,6,7




差点都忘了冒泡排序了,囧


你可能感兴趣的:(冒泡排序)