冒泡排序 - 混淆约2行(初学者)

时间:2014-03-06 03:53:48

标签: bubble-sort

我理解了大部分代码,但我只是对两行感到困惑

position = position + 1
N = N - 1

他们在代码中做了什么,为什么最后呢?有哪些替代方法可以写出这两行?有没有更有效的方法来编写这段代码?

data = [8,7,12,4,9,6,5]
N = len(data)
swapped = True
while swapped:
    swapped = False
    position = 0

    while (position < N - 1):
        if (data[position] > data[position + 1]):
            hold = data[position]
            data[position] = data[position + 1]
            data[position + 1] = hold
        else:
            swapped = True 
        position = position + 1
    N = N - 1

print(data)

1 个答案:

答案 0 :(得分:0)

len(data)=7 // length of array
position=0 //to set at beginning of the array

while(position<N-1) // scans your entire array till end of the array

if(data[position]>data[position+1]) // checks if 8 >7 if true store 8 in temp variable
then loop through to get smallest number at data[position] and 
else 
N=N-1 //get next value of N to meet the condition data[position]>data[position+1]

// prints(sorted array)

C中的等效代码:

for(int x=0; x<n; x++)
        {
            for(int y=0; y<n-1; y++)
            {
                if(array[y]>array[y+1])
                {
                    int temp = array[y+1];
                    array[y+1] = array[y];
                    array[y] = temp;

                     }
            }
        }

Notice that this will always loop n times from 0 to n, so the order of this algorithm is O(n^2). This is both the best and worst case scenario because the code contains no way of determining if the array is already in order.

好吧“我认为泡沫排序将是错误的方式。” :)