
排序
loreal8
学生
展开
-
排序知识总结
总结只有选择排序,堆排序,归并排序对数据不敏感,其余排序均敏感原创 2020-05-15 13:43:51 · 130 阅读 · 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 · 170 阅读 · 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 · 96 阅读 · 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 · 730 阅读 · 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 · 451 阅读 · 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 · 120 阅读 · 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 · 150 阅读 · 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 · 146 阅读 · 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 · 138 阅读 · 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 · 151 阅读 · 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 · 164 阅读 · 0 评论