博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基本排序算法
阅读量:6149 次
发布时间:2019-06-21

本文共 1090 字,大约阅读时间需要 3 分钟。

  • o(n^2)级别排序算法

为什么要学习O(n^2)的排序方法?

● 基础 ● 编码简单,易于实现,是一些简单情景的首选 ● 在一些特殊情况下,简单的排序算法更有效 ● 简单的排序算法思想衍生出复杂的排序算法 ● 作为子过程,改进更复杂的排序算法

1.选择排序 Selection Sort

每次选择没有排序部分的最小值和第一位交换

def selection_sort(org_arr, length):    """    选择排序,每次选择未排序部分的最小值和未排序部分的第一位交换位置    :param org_arr: 待排序数组    :param length: 待数组长度    :return:    """    for i in range(0, length):        # 寻找[i,n)区间里的最小值        main_index = i        for j in range(i+1, length):            if org_arr[j] < org_arr[main_index]:                main_index = j        org_arr[i], org_arr[main_index] = org_arr[main_index], org_arr[i]复制代码

2.插入排序 Insertion Sort

从左到右遍历每一个元素,每次将这个元素和前面的元素一一比较,如果比某个元素小,则跟其交换

def insert_sort(arr, n):    """    选择排序,每次选择未排序部分的最小值和未排序部分的第一位交换位置    :param arr:    :param n:    """    for i in range(0, n):        # 寻找元素arr[i]合适的插入位置        e = arr[i]        j = i  # j保存元素e应该插入的位置        while arr[j-1] > e and j > 0:            arr[j] = arr[j-1]            j -= 1        arr[j] = e复制代码

* 选择排序一个特别重要的性质:当找到合适的位置以后(arr[j-1] > e),可以提前终止内层循环

这使得在一个近乎有序的数组在进行插入排序的时候,效率要高的多,设置比o(logn)的算法效率还要高 当排序一个完全排序的数组时,插入排序的算法复杂度为o(n)级别

转载地址:http://hhmya.baihongyu.com/

你可能感兴趣的文章
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>
9、Dubbo-配置(4)
查看>>
前端第七天
查看>>
图解SSH原理及两种登录方法
查看>>
[转载] 七龙珠第一部——第058话 魔境圣地
查看>>
【总结整理】JQuery基础学习---样式篇
查看>>