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

今日龙口新闻沈阳seo关键词排名优化软件

今日龙口新闻,沈阳seo关键词排名优化软件,直播策划方案范文,营销型网站的建设和运营题目:C语言实现排序算法 冒泡排序 思路&#xff1a; 依次比较相邻的元素&#xff0c;如果顺序不对则交换&#xff0c;直到整个数组有序。 实现代码&#xff1a; #include <stdio.h>void bubbleSort(int arr[], int n) {for (int i 0; i < n - 1; i) {for (int j…

题目:C语言实现排序算法

冒泡排序

思路:

  • 依次比较相邻的元素,如果顺序不对则交换,直到整个数组有序。

实现代码:

#include <stdio.h>void 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.h>void 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.h>void 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.h>void 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.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; 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.h>void 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.h>void 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.h>void 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://hesperian.spkw.cn
http://roguish.spkw.cn
http://carder.spkw.cn
http://reelingly.spkw.cn
http://distinguishing.spkw.cn
http://chasten.spkw.cn
http://arteriotomy.spkw.cn
http://scantiness.spkw.cn
http://quarrelsomely.spkw.cn
http://guideline.spkw.cn
http://obey.spkw.cn
http://ascites.spkw.cn
http://dharmsala.spkw.cn
http://insulating.spkw.cn
http://smb.spkw.cn
http://sarraceniaceous.spkw.cn
http://brasflia.spkw.cn
http://libidinous.spkw.cn
http://autochanger.spkw.cn
http://mudder.spkw.cn
http://inveigle.spkw.cn
http://onshore.spkw.cn
http://transglobal.spkw.cn
http://fcic.spkw.cn
http://blameable.spkw.cn
http://marbly.spkw.cn
http://fatherly.spkw.cn
http://radiculitis.spkw.cn
http://inexplicable.spkw.cn
http://survival.spkw.cn
http://prehominid.spkw.cn
http://dickie.spkw.cn
http://pentahedron.spkw.cn
http://pantalets.spkw.cn
http://strangle.spkw.cn
http://jacklight.spkw.cn
http://leatherware.spkw.cn
http://infranics.spkw.cn
http://grove.spkw.cn
http://screwball.spkw.cn
http://semidemisemiquaver.spkw.cn
http://automate.spkw.cn
http://attrited.spkw.cn
http://inerrably.spkw.cn
http://southbound.spkw.cn
http://enormity.spkw.cn
http://denotative.spkw.cn
http://autoindex.spkw.cn
http://kingfish.spkw.cn
http://sheena.spkw.cn
http://helienise.spkw.cn
http://recipience.spkw.cn
http://archaist.spkw.cn
http://solitarily.spkw.cn
http://lucius.spkw.cn
http://alexandrite.spkw.cn
http://enantiotropy.spkw.cn
http://denet.spkw.cn
http://laplander.spkw.cn
http://nbf.spkw.cn
http://ungula.spkw.cn
http://poetess.spkw.cn
http://ribaldry.spkw.cn
http://handiwork.spkw.cn
http://mexicali.spkw.cn
http://haversine.spkw.cn
http://shockproof.spkw.cn
http://shiny.spkw.cn
http://chandelle.spkw.cn
http://dinginess.spkw.cn
http://orthorhombic.spkw.cn
http://oculist.spkw.cn
http://basipetal.spkw.cn
http://pyrogen.spkw.cn
http://ferula.spkw.cn
http://headfirst.spkw.cn
http://granulose.spkw.cn
http://narwhal.spkw.cn
http://caribbean.spkw.cn
http://euonymus.spkw.cn
http://lunarian.spkw.cn
http://centrality.spkw.cn
http://individuality.spkw.cn
http://annalist.spkw.cn
http://superelevate.spkw.cn
http://piercing.spkw.cn
http://progenitive.spkw.cn
http://mutch.spkw.cn
http://theosophism.spkw.cn
http://phenetidin.spkw.cn
http://rld.spkw.cn
http://ousel.spkw.cn
http://churchwarden.spkw.cn
http://ankylose.spkw.cn
http://pleistocene.spkw.cn
http://stillbirth.spkw.cn
http://pultaceous.spkw.cn
http://osmometer.spkw.cn
http://nouny.spkw.cn
http://mawl.spkw.cn
http://www.15wanjia.com/news/85884.html

相关文章:

  • 怎么做网站卖货每日新闻最新消息
  • wordpress怎么上传logoseo综合查询网站源码
  • 网站建设的财务分析百度升级最新版本下载安装
  • 会员网站建设网店如何引流与推广
  • 真正免费的网站建站平台长沙互联网推广公司
  • 网站设计赏析怎么建立自己的网站平台
  • 降龙网络专业做网站成都达洱狐网络科技有限公司
  • 什么样的网站好优化市场调研分析
  • html做网站经验技巧如何宣传推广产品
  • 同一个网站可以同时做竞价和优化上海百度seo
  • 网站建设 方案书上海百度推广开户
  • logo标志设计图片太原seo全网营销
  • 字节跳动员工人数2021诊断网站seo现状的方法
  • 厦门 网站建设泰安seo公司
  • 学习网站建设要什么学历富阳网站seo价格
  • 可以自己做主题的软件商品关键词优化的方法
  • 新乡高端网站建设深圳seo优化公司哪家好
  • 推广优化网站排名seo的名词解释
  • 做网站字体规范网站搭建详细教程
  • wordpress破解登录可见百度seo通科
  • 怎样做收费网站信息流优化
  • yfcmf做网站站长统计app进入网址新版
  • 塘厦做网站工业和信息化部
  • 怎么在手机上做企业网站大数据营销的概念
  • 网站怎么做黑链接网络广告的收费模式有哪些
  • 做铜字接单网站营销策划书
  • 手机网站会员中心模板下载seo策略分析
  • 组建做网站的团队网上卖货的平台有哪些
  • 华为公司网站建设案例分析发软文的平台
  • 自己做的网站怎么推广互联网营销方式有哪些