![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
w-here
不念过去,珍惜当下
展开
-
简单排序算法汇总
冒泡排序 插入排序 选择排序 快速排序 希尔排序 归并排序原创 2020-02-15 12:32:21 · 83 阅读 · 0 评论 -
简单排序算法之归并
import randomimport pretty_errorsdef mergeSort(data, left, right): if left < right: middle = (left + right)/2 middle = int(middle) mergeSort(data, left, middle) mergeSort(data, middle+...原创 2020-02-15 12:23:46 · 126 阅读 · 0 评论 -
简单排序算法之希尔
import randomimport pretty_errorsdef shellSort(data): length = len(data) while length > 1: length = length/2 length = int(length) for i in range(length): for j in range(i, len(data),...原创 2020-02-15 12:23:02 · 103 阅读 · 0 评论 -
简单排序算法之快排
import randomimport pretty_errors#挖坑法def quickSort(data, left_index, right_index): if left_index >= right_index: return middle_data = data[left_index] # 注意这里要保存中间元素的下标,后面会跟随循环改变但是不能直接用i或j...原创 2020-02-15 12:22:18 · 104 阅读 · 0 评论 -
简单排序算法之选择
import randomimport pretty_errorsdef selectSort(data): length = len(data) border = length - 1 for i in range(length): max_num = 0 for j in range(border): max_num = (j if (data[max_num] &...原创 2020-02-15 12:21:21 · 68 阅读 · 0 评论 -
简单排序算法之插入
import randomimport pretty_errorsdef insertSort(data): length = len(data) for i in range(1, length): current_data = i for j in range(i-1, -1, -1): if data[current_data] < data[j]: ...原创 2020-02-15 12:20:27 · 105 阅读 · 0 评论 -
简单排序算法之冒泡
import randomimport pretty_errors#isSorted用来检测数据是否已经有序,在内层循环时如果没有进行交换变量则表示数据已经排序完成,就不用再继续循环了#sortBoard用来检测每次内部循环的边界,边界后面的数已经有序,不用再比较def bubbleSort(data): length = len(data) sortBoard = length-...原创 2020-02-15 12:19:19 · 90 阅读 · 0 评论 -
快速排序
看到一篇大神的写法here,很厉害,我只是代码的搬运工。(搬了半天还有bug /要死了.jpg)#include<iostream>using namespace std;void quicksort(int a[],int left,int right){ if(left < right) { int i = left,j = right,m = a[l...原创 2018-08-17 14:53:49 · 90 阅读 · 0 评论 -
插入排序
将第一个元素标记为已排序for each unsorted element X 'extract' the element X for j = lastSortedIndex down to 0 if current element j > X 将排序过的元素向右移一格 break loop and insert X here#include<stdio.h&...原创 2018-04-01 10:32:36 · 111 阅读 · 0 评论 -
选择排序
重复(元素个数-1)次 把第一个没有排序过的元素设置为最小值 遍历每个没有排序过的元素 如果元素 < 现在的最小值 将此元素设置成为新的最小值 将最小值和第一个没有排序过的位置交换#include<stdio.h>int main(){ int i, j; int n, min,t; int a[100]; scanf("%d",&n)...原创 2018-04-01 09:35:00 · 123 阅读 · 0 评论 -
冒泡排序
利用交换旗帜变量flag可以判断是否有继续循环下去的必要;而每次循环都会将最大的元素送到尾部,所以每次循环次数都可以减少一个。做 交换旗帜变量 = 假 (False) for i = 1 to indexOfLastUnsortedElement-1 如果 左边元素 > 右边元素 交换(左边元素,右边元素) 交换旗帜变量 = 真(True)while 交换旗帜变...原创 2018-03-30 14:31:12 · 147 阅读 · 0 评论