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

无锡网站设计开发男女做恩爱视频网站

无锡网站设计开发,男女做恩爱视频网站,uiapp界面设计模板,广州公司注册流程及费用题目:C语言实现排序算法 冒泡排序 思路#xff1a; 依次比较相邻的元素#xff0c;如果顺序不对则交换#xff0c;直到整个数组有序。 实现代码#xff1a; #include stdio.hvoid bubbleSort(int arr[], int n) {for (int i 0; i n - 1; i) {for (int j…题目:C语言实现排序算法 冒泡排序 思路 依次比较相邻的元素如果顺序不对则交换直到整个数组有序。 实现代码 #include stdio.hvoid bubbleSort(int arr[], int n) {for (int i 0; i n - 1; i) {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;}}} }int main() {int arr[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点实现简单。缺点对于大规模数据排序效率低时间复杂度为O(n^2)。 选择排序 思路 从未排序的部分选择最小元素与未排序部分的第一个元素交换位置。重复这个过程直到整个数组有序。 实现代码 #include stdio.hvoid selectionSort(int arr[], int n) {int i, j, min_idx, temp;for (i 0; i n - 1; i) {min_idx i;for (j i 1; j n; j)if (arr[j] arr[min_idx])min_idx j;temp arr[min_idx];arr[min_idx] arr[i];arr[i] temp;} }int main() {int arr[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);selectionSort(arr, n);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点实现简单。缺点对于大规模数据排序效率低时间复杂度为O(n^2)。 插入排序 思路 将数组分为已排序和未排序两部分逐步将未排序的元素插入到已排序的部分直到整个数组有序。 实现代码 #include stdio.hvoid insertionSort(int arr[], int n) {int i, key, j;for (i 1; i n; i) {key arr[i];j i - 1;while (j 0 arr[j] key) {arr[j 1] arr[j];j j - 1;}arr[j 1] key;} }int main() {int arr[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);insertionSort(arr, n);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点简单对小规模数据或接近有序的数据排序效率高。缺点对于大规模数据排序效率低时间复杂度为O(n^2)。 归并排序 思路 将数组递归分成子数组然后合并这些子数组合并过程中保持有序。 实现代码 #include stdio.h #include stdlib.hvoid merge(int arr[], int left, int middle, int right) {int n1 middle - left 1;int n2 right - middle;int L[n1], R[n2];for (int i 0; i n1; i)L[i] arr[left i];for (int j 0; j n2; j)R[j] arr[middle 1 j];int i 0, j 0, k left;while (i n1 j n2) {if (L[i] R[j]) {arr[k] L[i];i;} else {arr[k] R[j];j;}k;}while (i n1) {arr[k] L[i];i;k;}while (j n2) {arr[k] R[j];j;k;} }void mergeSort(int arr[], int left, int right) {if (left right) {int middle left (right - left) / 2;mergeSort(arr, left, middle);mergeSort(arr, middle 1, right);merge(arr, left, middle, right);} }int main() {int arr[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);mergeSort(arr, 0, n - 1);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点稳定时间复杂度为O(n log n)。缺点需要额外的内存空间。 快速排序 思路 选择一个基准元素将数组分为小于基准和大于基准的两部分然后递归地对这两部分进行排序。 实现代码 #include stdio.hvoid 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; 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[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);quickSort(arr, 0, n - 1);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点效率高时间复杂度平均情况下为O(n log n)。缺点不稳定。 希尔排序 思路 将数组按一定间隔分组对每组使用插入排序。缩小间隔重复上述步骤直到间隔为1进行最后一次插入排序。 实现代码 #include stdio.hvoid shellSort(int arr[], int n) {for (int gap n / 2; gap 0; gap / 2) {for (int i gap; i n; i) {int temp arr[i];int j;for (j i; j gap arr[j - gap] temp; j - gap)arr[j] arr[j - gap];arr[j] temp;}} }int main() {int arr[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);shellSort(arr, n);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点相对于简单排序算法有较高的效率时间复杂度受增量序列的影响。缺点不稳定。 堆排序 思路 构建最大堆或最小堆将堆顶元素与最后一个元素交换然后将堆的大小减一并重新维护堆的性质。重复此过程直到堆为空得到有序数组。 实现代码 #include stdio.hvoid heapify(int arr[], int n, int i) {int largest i;int left 2 * i 1;int right 2 * i 2;if (left n arr[left] arr[largest])largest left;if (right n arr[right] arr[largest])largest right;if (largest ! i) {int temp arr[i];arr[i] arr[largest];arr[largest] temp;heapify(arr, n, largest);} }void heapSort(int arr[], int n) {for (int i n / 2 - 1; i 0; i--)heapify(arr, n, i);for (int i n - 1; i 0; i--) {int temp arr[0];arr[0] arr[i];arr[i] temp;heapify(arr, i, 0);} }int main() {int arr[] {64, 34, 25, 12, 22, 11, 90, 87, 10, 5};int n sizeof(arr) / sizeof(arr[0]);heapSort(arr, n);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点高效的原地排序算法时间复杂度为O(n log n)。缺点不稳定。 计数排序 思路 统计数组中每个元素的出现次数然后根据元素值和出现次数重新构建数组。 实现代码 #include stdio.h #include stdlib.hvoid countSort(int arr[], int n) {int max arr[0];for (int i 1; i n; i) {if (arr[i] max)max arr[i];}int* count (int*)malloc((max 1) * sizeof(int));int* output (int*)malloc(n * sizeof(int));for (int i 0; i max; i)count[i] 0;for (int i 0; i n; i)count[arr[i]];for (int i 1; i max; i)count[i] count[i - 1];for (int i n - 1; i 0; i--) {output[count[arr[i]] - 1] arr[i];count[arr[i]]--;}for (int i 0; i n; i)arr[i] output[i];free(count);free(output); }int main() {int arr[] {4, 2, 2, 8, 3, 3, 1, 5, 9};int n sizeof(arr) / sizeof(arr[0]);countSort(arr, n);printf(排序后的数组: );for (int i 0; i n; i)printf(%d , arr[i]);return 0; }优缺点 优点适用于元素范围不大的情况时间复杂度为O(n k)k为最大元素值。缺点对于元素范围很大的数据效率较低。 总结和推荐 推荐的排序算法归并排序和快速排序归并排序和快速排序都是高效的排序算法时间复杂度为O(n log n)适用于各种规模的数据集。归并排序是稳定的但需要额外的内存空间适用于所有数据类型。快速排序是不稳定的但在实践中通常比归并排序更快适用于大规模数据集。 这里推荐归并排序作为首选因为它是稳定的且不会对原始数据造成修改。如果在内存受限的情况下考虑可以选择快速排序。Bubble Sort、Selection Sort 和 Insertion Sort 适用于小规模数据集或教学目的不推荐用于实际应用。
http://www.dnsts.com.cn/news/101546.html

相关文章:

  • html5 公司网站模板河南seo
  • 网站开发技术难点百度排行榜风云
  • 学习网站建设有什么用为食堂写个网站建设
  • 上海比较好的网站建设公司单页面的网站
  • 青岛网站建设公司电话东莞横沥三江工业区
  • 长春移动网站建设ai建站工具
  • 保险网站导航服装设计学校排名
  • 濮阳门户网站开发网站制作易捷网络
  • 北京网站建设技术做影集的网站或软件
  • php网站后台开发西安计算机培训机构排名前十
  • 网站建站时间公关公司的职位
  • 江门建设局网站专业网站建设一条龙
  • 网站建设1993seo钦州浦北网站建设
  • 请人做网站需要注意什么惠州市网站建设企业
  • 网站备案域名所有人国家时事新闻热点
  • 教育网页设计网站公司网站可以免费建吗
  • 楚雄市城乡建设局网站搜索网址网站建站
  • 重庆模板建站软件企业名录查询软件
  • 建立网站程序什么是电子商务网站建设与管理
  • 不良网站正能量免费下载重庆网站制作招聘
  • 万江区网站建设公司网页设计师培训自我介绍
  • html5韩国网站模板网页界面设计使用色彩的作用是什么
  • go生物网站做蛋白定位活动策划网站源码
  • 网站开发使用技术第二版答案沈阳网站制作机构
  • 开发一个网站要多少钱网站克隆下来了然后再怎么做
  • 一般在百度做网站多少钱模板算量软件手机下载
  • 智能建网站软件怎么编程做一个小游戏
  • 淘宝内部优惠券网站怎样做的杭州网站建设hzyze
  • 做视频网站要多少钱多种五屏网站建设
  • 材料网站建设移动网站设计