排序
loreal8
学生
展开
-
排序知识总结
总结 只有选择排序,堆排序,归并排序对数据不敏感,其余排序均敏感原创 2020-05-15 13:43:51 · 112 阅读 · 0 评论 -
排序--非比较排序之 计数排序
计数排序 时间复杂度:O(max(n,范围)) 空间复杂度:O(范围) 稳定:一般教材认为是稳定的 数据敏感:不敏感 计数排序: 只适合小范围数据, 如果范围大,空间复杂度较高 void countSort(int* array, int n) { // 1, 2, 3, 1000000 //统计范围 int min = array[0], max = array[0]; for (int i = 1; i < n; ++i) { if (array[i] > max)原创 2020-05-11 17:22:40 · 150 阅读 · 0 评论 -
排序--归并排序
归并排序 时间复杂度:O(nlogn) 空间复杂度:O(n) 稳定:稳定 数据敏感:不敏感 #include<stdio.h> #include<string.h> #include<stdlib.h> //升序 //递归 void merge(int* array, int begin, int mid, int end, int* tmp) { int begin1 = begin; int end1 = mid; //分成两个子区间 int begin2原创 2020-05-11 17:20:52 · 87 阅读 · 0 评论 -
排序--快速排序(前后指针法)
快速排序(前后指针法) 时间复杂度:最坏:O(n^2)–>不会出现 最好:O(nlogn) 平均:O(nlogn) 空间复杂度:O(logn) 函数调用栈, 极端情况: O(n)–>不会出现 稳定性:不稳定 数据敏感:敏感 #include<stdio.h> //升序 void Swap(int* array, int i, int j) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } //三原创 2020-05-11 17:11:16 · 677 阅读 · 0 评论 -
排序--快速排序(挖坑法)
快排(挖坑法) 时间复杂度:最坏:O(n^2)–>不会出现 最好:O(nlogn) 平均:O(nlogn) 空间复杂度:O(logn) 函数调用栈, 极端情况: O(n)–>不会出现 稳定性:不稳定 数据敏感:敏感 #include<stdio.h> void Swap(int* array, int i, int j) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } //三数取中 //这么做原创 2020-05-11 17:07:57 · 419 阅读 · 0 评论 -
排序--堆排序
数组的堆排序 #include<stdio.h> //对数组进行堆排序 //数组要升序,则要建大堆 //数组要降序,建小堆 typedef int datatype; void Swap(datatype* array, int left, int right) { int tmp = array[left]; array[left] = array[right]; array[...原创 2020-04-20 18:00:22 · 115 阅读 · 0 评论 -
排序--快速排序(hora划分)
快速排序 #include<stdio.h> //快速排序,升序 void Swap(int* array, int i, int j) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } int partion(int* array, int begin, int end) { //选择基准值 int k...原创 2020-05-06 18:19:45 · 137 阅读 · 0 评论 -
排序--冒泡排序
冒泡排序 时间复杂度:最坏O(n^2) 平均O(n^2) 最好O(n) 空间复杂度:O(1) 稳定性:稳定 数据敏感:敏感 #include<stdio.h> //升序 void bubbleSort(int* arr,int size) { for (int i = 0; i < size - 1; i++) { for (int j = 0; j < size ...原创 2020-05-06 18:11:13 · 134 阅读 · 0 评论 -
排序--选择排序
选择排序 时间复杂度:最坏O(n^2) 平均O(n^2) 最好O(n^2) 空间复杂度:O(1) 稳定性:稳定 数据敏感:不敏感 #include<stdio.h> //升序 void selectSort(int* arr,int size) { for (int i = 0; i < size - 1; i++) { //start表示未排序的最左边元素位置 in...原创 2020-05-06 18:10:04 · 129 阅读 · 0 评论 -
排序--希尔排序
希尔排序 时间复杂度:最坏O(n^1.3) 平均O(n^1.3) 最好O(n) 空间复杂度:O(1) 稳定性:不稳定 —> 分组时相同值的元素不一定可以分到同一组,预排序是可能导致相对位置发生变化 数据敏感:敏感 #include<stdio.h> //升序 void shellSort(int* arr, int size) { int gap = size; whil...原创 2020-05-06 18:07:05 · 139 阅读 · 0 评论 -
排序--插入排序
插入排序 直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。 当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array[i]的排序码与 array[i-1],array[i-2],…的排序码顺序进行比较...原创 2020-04-27 21:58:00 · 150 阅读 · 0 评论