如何设计一个具有高转化率的平湖网站改版营销型网站?
摘要:平湖网站改版,营销型网站设计,房地产开发公司质量保证体系,房地产网站开发商数组排序算法 用C语言实现的数组排序算法。 排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度是否稳定适用场景QuickO(n log n)O(n)O(n
平湖网站改版,营销型网站设计,房地产开发公司质量保证体系,房地产网站开发商数组排序算法 用C语言实现的数组排序算法。 排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度是否稳定适用场景QuickO(n log n)O(n)O(n log n)O(log n)不稳定大规模数据#xff0c;通用排序BubbleO(n)O(n)O(n)O(1)稳定小规模数据#xff0c;教学用途InsertO(n)…数组排序算法 用C语言实现的数组排序算法。 排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度是否稳定适用场景QuickO(n log n)O(n²)O(n log n)O(log n)不稳定大规模数据通用排序BubbleO(n²)O(n²)O(n)O(1)稳定小规模数据教学用途InsertO(n²)O(n²)O(n)O(1)稳定小规模或部分有序数据SelectO(n²)O(n²)O(n²)O(1)不稳定小规模数据简单实现MergeO(n log n)O(n log n)O(n log n)O(n)稳定大规模数据稳定排序需求HeapO(n log n)O(n log n)O(n log n)O(1)不稳定大规模数据原地排序需求CountO(n k)O(n k)O(n k)O(n k)稳定小范围整数排序RadixO(d(n k))O(d(n k))O(d(n k))O(n k)稳定整数或字符串排序位数较小BucketO(n k)O(n²)O(n)O(n k)稳定均匀分布的数据ShellO(n log n)O(n²)O(n log n)O(1)不稳定中等规模数据改进的插入排序
快速排序
快速排序Quick Sort是一种高效的排序算法采用分治法Divide and Conquer策略。以下是使用C语言实现数组的快速排序的代码
#include stdio.h// 交换两个元素的值
void swap(int* a, int* b) {int temp *a;*a *b;*b temp;
}// 分区函数返回分区点的索引
int partition(int arr[], int low, int high) {int pivot arr[high]; // 选择最后一个元素作为基准int i (low - 1); // i是较小元素的索引for (int j low; j high - 1; j) {// 如果当前元素小于或等于基准if (arr[j] pivot) {i; // 增加较小元素的索引swap(arr[i], arr[j]);}}swap(arr[i 1], arr[high]); // 将基准元素放到正确的位置return (i 1);
}// 快速排序的递归函数
void quickSort(int arr[], int low, int high) {if (low high) {// pi是分区点arr[pi]已经排好序int pi partition(arr, low, high);// 递归地对分区点左边和右边的子数组进行排序quickSort(arr, low, pi - 1);quickSort(arr, pi 1, high);}
}// 打印数组
void printArray(int arr[], int size) {for (int i 0; i size; i) {printf(%d , arr[i]);}printf(\n);
}// 主函数
int main() {int arr[] {10, 7, 8, 9, 1, 5};int n sizeof(arr) / sizeof(arr[0]);printf(原始数组: \n);printArray(arr, n);quickSort(arr, 0, n - 1);printf(排序后的数组: \n);printArray(arr, n);return 0;
}代码说明
swap函数用于交换两个元素的值。partition函数选择数组的最后一个元素作为基准pivot然后将数组分为两部分左边部分的元素都小于或等于基准右边部分的元素都大于基准。最后返回基准元素的正确位置。quickSort函数递归地对数组进行排序。首先通过partition函数找到分区点然后对分区点左边和右边的子数组分别进行快速排序。printArray函数用于打印数组的内容。main函数测试快速排序的实现。
