业界动态
说到算法怎么可以少了排序呢~
2024-12-17 05:59
# 以上均属性个人理解 若有错误 烦请提出 !

# 冒泡排序
# 一般冒泡排序的时间复杂度为O(n^2)
# 每一次循环都把最大的一个数往右浮
# 如果是进行排行榜取前几的榜单业务,用冒泡的话时间复杂度为O(n)
def BubbleSort(val):
for i in range(len(val)):
for j in range(len(val)-i-1):
if val[j] > val[j+1]:
val[j],val[j+1] = val[j+1],val[j]
return val

# 选择排序
# 个人感觉跟冒泡排序 没差太多 就是在中间设置了个最小值的变量
# 每一次都会找到最小值 并把最小值往左移
# 时间复杂度一样为O(n^2)
def SelectSort(val):
for i in range(len(val)):
minloc = i
for j in range(i+1,len(val)):
if val[j] < val[minloc]:
val[j],val[minloc] = val[minloc],val[j]
return val


# 插入排序
# 依次取出的数跟前几个数相比 把它放在正确位置。列表i前面的位置是有序的
# 时间复杂度为O(n^2)
def InsertSort(val):
for i in range(len(val)):
temp = val[i]
j = i - 1
while j >=0 and val[j] > temp:
val[j+1] = val[j]
j = j - 1
val[j+1] = temp
return val


# 快速排序
# 暴力的不断拆分成左右,然后进行对比排序
# 在左右列表合并前都是有序的 然后进行合并
# 时间复杂度为O(nlogn)
def Partition(val,left,right):
temp = val[left]
while left < right:
while left < right and val[right] >= temp:
right = right - 1
val[left] = val[right]
while left < right and val[left] <= temp:
left = left + 1
val[right] = val[left]
val[left] = temp
return left
def _QuickSort(val,left,right):
if left < right:
mid = Partition(val,left,right)
_QuickSort(val,left,mid-1)
_QuickSort(val,mid+1,right)
def QuickSort(val):
_QuickSort(val,0,len(val))
return val

# 快排二
def quickSort(val,left,right):
if left < right:
temp = val[right]
mid =left-1
for j in range(left,right):
if val[j] <= temp:
# 如果val[j]<=temp 那么说明j是小的可以左移
mid+=1
val[mid],val[j] = val[j],val[mid]
# 说明j 比最右边大 和右调换位置 下次循环为temp
val[mid+1],val[right] = val[right],val[mid+1]
mid = mid+1
quickSort(val,left,mid-1)
quickSort(val,mid+1,right)
return val
val = [11,32,22,55,67,2,30,44,78,98]
res = quickSort(val,0,len(val)-1)
print(res)



# 归并排序
# 个人的感觉就是归并排序和快速排序的区别不大
# 好吧 归并的话需要再申请一个列表 添加排完序的列表
# 时间复杂度为 O(nlogn)
def MergeSort(val,left,right):
if left < right:
mid = (left + right)//2
MergeSort(val,left,mid)
MergeSort(val,mid+1,right)
return Merge(val,left,mid,right)

def Merge(val,left,mid,right):
i = left
j = right
temp = []
if left <right:
while i <= mid and j <=right:
if val[i] <val[j]:
temp.append(val[i])
i = i + 1
else:
temp.append(val[j])
j = j + 1
while i <= mid:
temp.append(val[i])
i = i + 1
while j <= right:
temp.append(val[j])
j = j + 1
val[left : right+1] = temp
return val
    以上就是本篇文章【说到算法怎么可以少了排序呢~】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/8942.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
发改委:推进户用光伏发展,助力农民拓宽增收新路径
中国产品流通经纪人协会供销合作行业标准《农产品食品供应商信用评价规范》参编单位征集函中国农产品流通经纪人协会供销合作行业
泉州百度爱采购运营介绍
百度爱采购入驻条件有哪些:商家需持有工商行政管理局颁发的营业执照,并且执照在6个月有效期内;厂家商品真实在营且符合国家相
抖音feed是什么 feed广告投放流程
feed是什么?feed流(又称信息流)它是穿插在App内容中的广告,具有原生沉浸式体验,支持多种展现形式。feed可以进行线索收集,
抖音投流怎么投?找到最合适的优化路线,实现精准引流与高效转化!
在如今竞争激烈的市场中,抖音广告已经成为商家吸引流量、增加曝光和转化的重要工具。很多企业都在问:“抖音投流怎么投,才能真
提升脸书播放/浏览量:Facebook Workplace的策略
以下介绍:提升脸书播放/浏览量:Facebook Workplace的策略关于提升脸书播放/浏览量:Facebook Workplace的策略所提到的问题请大
想换07年左右的老车,值得吗?
百车全说别人研究车,而我研究你!问:想买一辆2007年左右,绿色(丨), 3.0。主要是喜欢这种雪茄车身,想留着自己偶尔开一下,家
年度盘点丨西安:2024年度十大交通精细化治理案例
​​2024年,西安公安交警深入践行以人民为中心的发展思想,聚焦群众反映强烈的交通问题,坚持缓堵保畅、全域治理,坚持小切口入
怎样才能很好的提高百度SEO的排名呢
怎样使自己的网站在百度等搜索引擎排名靠前  提高用户体验确保网站加载速度快,移动设备友好,并提供良好的用户互动体验。利用
《人工智能:未来世界的“智慧引擎”》
在当今这个科技飞速发展的时代,人工智能(Artificial Intelligence,简称AI)正以前所未有的速度重塑
未来直播技术的创新与发展方向
随着信息技术的快速发展和移动互联网的广泛普及,直播已经成为当今互联网领域的重要应用之一。从最初的娱乐直播到现在的教育直播