排序算法
常见排序算法
狂奔的犀牛
just do it
展开
-
选择排序
int swap(int arr[], int index1, int index2) { int temp = arr[index1]; int arr[index1] = arr[index2]; arr[index2] = temp; } //O(n^2) void selectSort(int arr[], int length) { for (int i = 0; i < length; i++) { for (int j = i.原创 2020-05-08 23:18:30 · 115 阅读 · 0 评论 -
冒泡排序
冒泡排序,比较相邻元素大小。 int swap(int arr[], int index1, int index2) { int temp = arr[index1]; int arr[index1] = arr[index2]; arr[index2] = temp; } //时间复杂度为 O(n^2) void bubbleSort(int arr[], int length) { for (int i = 0; i < length; i++) {原创 2020-05-08 23:14:21 · 105 阅读 · 0 评论 -
堆排序
堆 堆是一种数据结构,具有两个特点: (1)完全二叉树 (2)父节点的值 > 子节点的值 完全二叉树 完全二叉树是由满二叉树而引出来的。 对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 普通的完全二叉树,如果父、子节点的值大小没有顺序,那么可以通过 heapify 操作(交换父、子节点的值,...原创 2020-05-08 22:53:56 · 80 阅读 · 0 评论