当前位置: 首页 > wzjs >正文

网站建设对数据库有何要求一家专门做动漫的网站

网站建设对数据库有何要求,一家专门做动漫的网站,wordpress前端发送后端,做网站的开题报告一、冒泡排序 原理 通过相邻元素的比较和交换,将最大元素逐步"冒泡"到数组末尾。每轮遍历确定一个最大值的最终位置,时间复杂度为 O(n)。 优化点:若某轮未发生交换,说明数组已有序,可提前终止排序。 C 语…

一、冒泡排序

原理

通过相邻元素的比较和交换,将最大元素逐步"冒泡"到数组末尾。每轮遍历确定一个最大值的最终位置,时间复杂度为 O(n²)。
优化点:若某轮未发生交换,说明数组已有序,可提前终止排序。

C 语言实现
#include <stdio.h>void bubbleSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {  // 外层控制轮数int swapped = 0;for (int j = 0; j < n-i-1; j++) {  // 内层比较相邻元素if (arr[j] > arr[j+1]) {int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;swapped = 1;}}if (!swapped) break;  // 提前终止优化}
}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr)/sizeof(arr[0](@ref));bubbleSort(arr, n);printf("Sorted array: ");for (int i=0; i<n; i++) printf("%d ", arr[i]);return 0;
}

二、选择排序

原理

每次从未排序部分选择最小元素,与未排序部分的起始元素交换位置。时间复杂度始终为 O(n²),空间复杂度 O(1)。

C 语言实现
#include <stdio.h>void selectionSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int minIndex = i;for (int j = i+1; j < n; j++) {  // 寻找最小值索引if (arr[j] < arr[minIndex]) minIndex = j;}int temp = arr[i];  // 交换元素arr[i] = arr[minIndex];arr[minIndex] = temp;}
}int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr)/sizeof(arr[0](@ref));selectionSort(arr, n);printf("Sorted array: ");for (int i=0; i<n; i++) printf("%d ", arr[i]);return 0;
}

三、归并排序

原理

采用分治策略:将数组递归拆分为左右子数组,直到子数组长度为 1,再合并两个有序子数组。时间复杂度稳定为 O(n log n),但需要 O(n) 额外空间。

C 语言实现
#include <stdio.h>
#include <stdlib.h>void merge(int arr[], int l, int m, int r) {int n1 = m - l + 1, n2 = r - m;int *L = (int*)malloc(n1 * sizeof(int));int *R = (int*)malloc(n2 * sizeof(int));for (int i = 0; i < n1; i++) L[i] = arr[l + i];for (int j = 0; j < n2; j++) R[j] = arr[m + 1 + j];int i = 0, j = 0, k = l;while (i < n1 && j < n2) {  // 合并有序数组arr[k++] = (L[i] <= R[j]) ? L[i++] : R[j++];}while (i < n1) arr[k++] = L[i++];while (j < n2) arr[k++] = R[j++];free(L); free(R);
}void mergeSort(int arr[], int l, int r) {if (l >= r) return;int m = l + (r - l)/2;mergeSort(arr, l, m);    // 递归拆分左半mergeSort(arr, m+1, r);  // 递归拆分右半merge(arr, l, m, r);     // 合并左右部分
}int main() {int arr[] = {12, 11, 13, 5, 6, 7};int n = sizeof(arr)/sizeof(arr[0](@ref));mergeSort(arr, 0, n-1);printf("Sorted array: ");for (int i=0; i<n; i++) printf("%d ", arr[i]);return 0;
}

四、快速排序

原理

通过选取基准元素(如最后一个元素),将数组分为小于基准和大于基准的两部分,递归处理子数组。平均时间复杂度 O(n log n),最坏 O(n²)。

C 语言实现
#include <stdio.h>void swap(int* a, int* b) {int t = *a;*a = *b;*b = t;
}int partition(int arr[], int low, int high) {int pivot = arr[high];  // 选取最后一个元素为基准int i = (low - 1);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) {int pi = partition(arr, low, high);quickSort(arr, low, pi-1);   // 递归左半部分quickSort(arr, pi+1, high);  // 递归右半部分}
}int main() {int arr[] = {10, 7, 8, 9, 1, 5};int n = sizeof(arr)/sizeof(arr[0](@ref));quickSort(arr, 0, n-1);printf("Sorted array: ");for (int i=0; i<n; i++) printf("%d ", arr[i]);return 0;
}

五、桶排序

原理

将元素分布到多个桶中,每个桶单独排序后合并。适用于均匀分布的数据,理想时间复杂度 O(n + k)。

C 语言实现
#include <stdio.h>
#include <stdlib.h>#define BUCKET_SIZE 10  // 假设数据范围是0-99typedef struct Node {int data;struct Node* next;
} Node;void insert(Node** bucket, int value) {Node* newNode = (Node*)malloc(sizeof(Node));newNode->data = value;newNode->next = NULL;if (*bucket == NULL) {*bucket = newNode;} else {Node* curr = *bucket;while (curr->next != NULL) curr = curr->next;curr->next = newNode;}
}void bucketSort(int arr[], int n) {Node** buckets = (Node**)malloc(BUCKET_SIZE * sizeof(Node*));for (int i=0; i<BUCKET_SIZE; i++) buckets[i] = NULL;// 将元素分配到桶中for (int i=0; i<n; i++) {int index = arr[i] / 10;  // 假设元素范围0-99insert(&buckets[index], arr[i]);}// 合并桶到原数组int idx = 0;for (int i=0; i<BUCKET_SIZE; i++) {Node* curr = buckets[i];while (curr != NULL) {arr[idx++] = curr->data;curr = curr->next;}}// 释放内存(此处省略链表节点释放代码)free(buckets);
}int main() {int arr[] = {29, 25, 3, 49, 9, 37, 21, 43};int n = sizeof(arr)/sizeof(arr[0](@ref));bucketSort(arr, n);printf("Sorted array: ");for (int i=0; i<n; i++) printf("%d ", arr[i]);return 0;
}

总结与对比

算法时间复杂度稳定性适用场景
冒泡排序O(n²)稳定小规模数据或接近有序数据
选择排序O(n²)不稳定简单实现,内存有限制
归并排序O(n log n)稳定大规模数据,需要稳定性
快速排序O(n log n) 平均不稳定通用场景,内存敏感
桶排序O(n + k)(理想情况)稳定均匀分布数据,外部排序
http://www.dtcms.com/wzjs/567930.html

相关文章:

  • 西安网站建设 北郊建立一个同城网站要怎么做
  • 新新手手网网站站建建设设杭州百度推广优化排名
  • 全球设计师网企业网站搜索优化外
  • 电子元器件商城网站建设做第三方的qq互联接口时_回调到自己的网站时要延时很久是什么原因
  • 长沙有做网站的吗有口碑的网站建设
  • 免费的行情网站app软件推荐比较好的logo设计网站
  • 网站开发报价和开发周期comodo ssl wordpress
  • 山东省工程建设管理协会网站百度秒收录蜘蛛池
  • 网站建设的目标用户wordpress是什么写的
  • 山东军辉建设集团有限公司 公司网站网址北京市建设厅门户网站6
  • 镇江市建设招标网官方网站横沥网站设计
  • 辽宁省建设安全监督网网站响应式网站 站长平台
  • seo发外链网站近期十大热点新闻
  • 无锡做网站公司有哪些照片制作软件免费
  • 百度网站前三名权重一般在多少网站开发常用字体
  • 广东网站se0优化公司北京工商网站
  • 软件开发与网站开发视频网站建站费用
  • wordpress配置多语言免费seo技术教程视频
  • 余姚做网站设计建站及推广
  • 邯郸网站只做顺德手机网站设计咨询
  • wordpress搭建淘客网站景区网站建设策划方案
  • 代做网站推广的公司哪家好wordpress 主题 支持文章形式
  • 小企业网站建设方案网站计数器代码js
  • wordpress一定要本地建站吗贵州省住房和城乡建设局网站首页
  • 广东网站设计哪家好wordpress文章引入代码
  • 洛阳建设企业网站公司网页开发三件套
  • 免费建立个人网站官网onedrive结合WordPress
  • 免费网站空间 - 百度计算机怎么建设网站
  • 三亚网站建设报价腾讯云服务器搭建WordPress
  • 怎么夸一个网站做的好看嘉兴五县两区网站建设