vipkid面试题-测试工程师i

要求

有一个无序数组,找到其中能被2,3整除的数排序,剩下的数也排序后跟在后面

面试官偏爱

1.排序算法抽象成方法 2.用效率更高的排序算法

我的答案

用 的冒泡排序,大家可以随意选排序算法

# encoding:utf-8

import random
import time
# 生成随机数 x个
r_list=[]
for i in range(10):
    r_list.append(random.randint(1, 100))
print r_list

# 冒泡排序
def sort(list=[]):
    length = len(list)
    for i in range(0, length):
        for j in range(i+1, length):
            if list[i]>list[j]:
                c = list[i]
                list[i] = list[j]
                list[j] = c

    return list

#开始时间
starttime=time.clock()
# 排序
newlist=sort(r_list)
print newlist
# 类似插队方法
myindex=0
for k in range(len(newlist)):
    # 题目要求 能被2,3 zhengchu
    if(newlist[k]%2==0 or newlist[k]%2==0 ):
        print newlist[k],k
        c=newlist[k]
        newlist.insert(myindex,c)
        newlist.pop(k+1)
        myindex = myindex + 1
print r_list
# 结束时间
endtime=time.clock()
total_time1=endtime-starttime
print("总耗时:"+str(total_time1))



starttime=time.clock()
a_list=[]
b_list=[]
# 取出题目要求的shu
for k in range(len(r_list)):
    if (r_list[k] % 2 == 0 or r_list[k] % 2 == 0):
        a_list.append(r_list[k])
    else:
        b_list.append(r_list[k])
a_list=sort(a_list)
print a_list
b_list=sort(b_list)
print b_list
a_list.extend(b_list)
print a_list
endtime=time.clock()
total_time=endtime-starttime
print("总耗时:"+str(total_time))

比较

对比了两个方法,还是第二个方法速度快

[81, 44, 43, 19, 47, 6, 80, 27, 67, 13]
[6, 13, 19, 27, 43, 44, 47, 67, 80, 81]
6 0
44 5
80 8
[6, 44, 80, 13, 19, 27, 43, 47, 67, 81]
总耗时:0.00027783459092
[6, 44, 80]
[13, 19, 27, 43, 47, 67, 81]
[6, 44, 80, 13, 19, 27, 43, 47, 67, 81]
总耗时:0.000222121058176

Process finished with exit code 0
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值