+ -
当前位置:首页 → 问答吧 → 菜鸟问题,我的数字排序算法。

菜鸟问题,我的数字排序算法。

时间:2011-01-23

来源:互联网

我菜鸟一个,还在读初中。
下面是我的数字排序代码
  1. args=[]

  2. for i in range(0,10):
  3.     k=raw_input("Input number:")
  4.     args.append(int(k))

  5. l=len(args)
  6. while True:
  7.     F=True
  8.     n=0
  9.     for i in range(0,l-1):
  10.         if args[n] > args[n+1]:
  11.                 t=args[n]
  12.                 args[n]=args[n+1]
  13.                 args[n+1]=t
  14.                 F=False
  15.         n=n+1
  16.     if F:break
  17.     print args
复制代码
交互过程:>>> ================================ RESTART ================================
>>>
Input number:123
Input number:5446
Input number:0
Input number:54
Input number:324
Input number:9
Input number:1
Input number:0
Input number:324
Input number:67587
[123, 0, 54, 324, 9, 1, 0, 324, 5446, 67587]
[0, 54, 123, 9, 1, 0, 324, 324, 5446, 67587]
[0, 54, 9, 1, 0, 123, 324, 324, 5446, 67587]
[0, 9, 1, 0, 54, 123, 324, 324, 5446, 67587]
[0, 1, 0, 9, 54, 123, 324, 324, 5446, 67587]
[0, 0, 1, 9, 54, 123, 324, 324, 5446, 67587]
>>>
我的想法就是不断对N个数进行两两比较(我不知道算不算两两比较,就是比较第一个和第二个,第二个和第三个,但不能保证第一个和第三个的大小顺序)一直进行到前一个数一定比后一个数大,这时候代码就停止运行。
我主要想知道这属于哪一种排序算法?效率如何?还有一点,就是对于N个数据至多要进行几次这样的两两比较循环(最好能解释下问什么)?
希望得到指点。

作者: 键盘男孩   发布时间: 2011-01-23

1:冒泡。。。
2:其实你用Python级的排序就已经没效率了……算法本身也没效率……再加上你用Python写C代码就更没效率了……
3:n(n-1)……比如[5,4,3,2,1]……甚至很多并非完全倒序的情况也算最糟的情况……你加个变量看看交换了几次就知道了……
  1. def noobSort(L):
  2.         F=False
  3.         N1=N2=0
  4.         while not F:
  5.                 F=True
  6.                 for n in range(len(L)-1):
  7.                         if L[n] > L[n+1]:
  8.                                 L[n],L[n+1]=L[n+1],L[n]
  9.                                 F=False
  10.                                 N1+=1
  11.                         N2+=1
  12.                 print(N1,N2,L)
复制代码

作者: Kabie   发布时间: 2011-01-24

热门下载

更多