菜鸟问题,我的数字排序算法。
时间:2011-01-23
来源:互联网
我菜鸟一个,还在读初中。
下面是我的数字排序代码
复制代码
交互过程:>>> ================================ 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个数据至多要进行几次这样的两两比较循环(最好能解释下问什么)?
希望得到指点。
下面是我的数字排序代码
- args=[]
-
- for i in range(0,10):
- k=raw_input("Input number:")
- args.append(int(k))
-
- l=len(args)
- while True:
- F=True
- n=0
- for i in range(0,l-1):
- if args[n] > args[n+1]:
- t=args[n]
- args[n]=args[n+1]
- args[n+1]=t
- F=False
- n=n+1
- if F:break
- print args
>>>
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]……甚至很多并非完全倒序的情况也算最糟的情况……你加个变量看看交换了几次就知道了……
复制代码
2:其实你用Python级的排序就已经没效率了……算法本身也没效率……再加上你用Python写C代码就更没效率了……
3:n(n-1)……比如[5,4,3,2,1]……甚至很多并非完全倒序的情况也算最糟的情况……你加个变量看看交换了几次就知道了……
- def noobSort(L):
- F=False
- N1=N2=0
- while not F:
- F=True
- for n in range(len(L)-1):
- if L[n] > L[n+1]:
- L[n],L[n+1]=L[n+1],L[n]
- F=False
- N1+=1
- N2+=1
- print(N1,N2,L)
作者: Kabie 发布时间: 2011-01-24
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28