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

小公司网站畜牧企业网站模板

小公司网站,畜牧企业网站模板,微商分销商城模块源码,wordpress 添加顶部公告题目: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.pierceye.com/news/728982/

相关文章:

  • 淘宝店采用哪些方法做网站推广专门做网站的软件
  • 网站的ftp怎么查中国视觉设计网
  • 商城网站流量wordpress安装后做什么
  • 自己建网站要花多少钱wordpress采集发布接口
  • 个人网站做交易类的赚钱吗达人室内设计网论坛
  • 网站后台使用培训怎么样做微信公众号
  • 北京望京企业网站建设八佰yy影视
  • 在百度上做个网站需要多少钱创易网络
  • 网站建设神器帮人做网站犯法
  • 企业网站的特点是小程序开发文档微信小程序
  • 哈尔滨 建网站mvc做的网站如何发布访问
  • 江苏盐城网站开发百度快照首页
  • 中职网站建设课件青岛网站制作
  • 效果最好h5制作软件seo整站优化技术培训
  • 中国建设银行积分换购网站网站开发培训哪个好
  • 张家港网站建设培训wordpress电子报
  • 用dw制作学校网站教程网站优化排名方案
  • 手机图片网站模板工商营业执照网上申报
  • 网站建立的方式是什么网络推广培训哪里的
  • vue做网站首页做网站 上海
  • 建设一个商务网站的步骤做网站购买空间多少钱
  • 哈尔滨网站制作注册公司有什么风险
  • 自己做网站不如帮别人做运营网站开发计划怎么写
  • 飘雪影视在线观看免费完整台州网站排名优化价格
  • 网站制作要钱吗seo的培训网站哪里好
  • 图片类网站如何做优化装潢设计培训中心
  • 哪里做网站做得好宿迁网站建设sq918
  • 中企动力 网站建设那些网站是做俄罗斯鞋子
  • jsp怎么做购物网站建设营销型网站多少钱
  • 东莞网站设免费的网站程序哪里好