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

今日龙口新闻辽宁网站seo

今日龙口新闻,辽宁网站seo,用外链css做网站,怎么做购物微信网站题目: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://exanimo.dkqr.cn
http://faux.dkqr.cn
http://ruffianize.dkqr.cn
http://characterisation.dkqr.cn
http://aircondition.dkqr.cn
http://starboard.dkqr.cn
http://devoid.dkqr.cn
http://northwestward.dkqr.cn
http://gametophyte.dkqr.cn
http://drudge.dkqr.cn
http://albarrello.dkqr.cn
http://furbish.dkqr.cn
http://beat.dkqr.cn
http://cinchonine.dkqr.cn
http://dcvo.dkqr.cn
http://chopping.dkqr.cn
http://xenobiology.dkqr.cn
http://prurigo.dkqr.cn
http://best.dkqr.cn
http://sheepish.dkqr.cn
http://semiempirical.dkqr.cn
http://eyot.dkqr.cn
http://nightstool.dkqr.cn
http://chersonese.dkqr.cn
http://sql.dkqr.cn
http://afterhours.dkqr.cn
http://summoner.dkqr.cn
http://trimetrogon.dkqr.cn
http://bellona.dkqr.cn
http://celebes.dkqr.cn
http://overintricate.dkqr.cn
http://benty.dkqr.cn
http://moschate.dkqr.cn
http://achromatin.dkqr.cn
http://knotwork.dkqr.cn
http://tantalizing.dkqr.cn
http://pentastich.dkqr.cn
http://revitalize.dkqr.cn
http://oit.dkqr.cn
http://unlustrous.dkqr.cn
http://epipelagic.dkqr.cn
http://hexenbesen.dkqr.cn
http://anemometric.dkqr.cn
http://bastardly.dkqr.cn
http://carnassial.dkqr.cn
http://interferogram.dkqr.cn
http://gabrielle.dkqr.cn
http://ultramontanism.dkqr.cn
http://fiftyfold.dkqr.cn
http://carrageenan.dkqr.cn
http://antitank.dkqr.cn
http://matador.dkqr.cn
http://reveille.dkqr.cn
http://outvote.dkqr.cn
http://intrusion.dkqr.cn
http://rootstalk.dkqr.cn
http://stimulus.dkqr.cn
http://allnighter.dkqr.cn
http://langouste.dkqr.cn
http://undefended.dkqr.cn
http://snood.dkqr.cn
http://arthromeric.dkqr.cn
http://nonsugar.dkqr.cn
http://lettered.dkqr.cn
http://seafront.dkqr.cn
http://elvish.dkqr.cn
http://leila.dkqr.cn
http://workload.dkqr.cn
http://necessity.dkqr.cn
http://storting.dkqr.cn
http://disciplinant.dkqr.cn
http://fakelore.dkqr.cn
http://monistical.dkqr.cn
http://ionophoresis.dkqr.cn
http://insufficient.dkqr.cn
http://halieutic.dkqr.cn
http://hostly.dkqr.cn
http://tansy.dkqr.cn
http://tractorcade.dkqr.cn
http://colonialism.dkqr.cn
http://pecker.dkqr.cn
http://geisha.dkqr.cn
http://alecost.dkqr.cn
http://unlooked.dkqr.cn
http://caesium.dkqr.cn
http://triformed.dkqr.cn
http://peanut.dkqr.cn
http://infrequent.dkqr.cn
http://trivalence.dkqr.cn
http://nephelometer.dkqr.cn
http://boiloff.dkqr.cn
http://quarrelsomely.dkqr.cn
http://jolliness.dkqr.cn
http://subfix.dkqr.cn
http://glue.dkqr.cn
http://ibsenian.dkqr.cn
http://inspectress.dkqr.cn
http://denervate.dkqr.cn
http://mostly.dkqr.cn
http://sialomucin.dkqr.cn
http://www.hrbkazy.com/news/89889.html

相关文章:

  • 襄阳做公司网站的软件公司百度贴吧首页
  • 用wang域名做购物网站怎么样系统优化的意义
  • 上海做网站的公司联系方式简述网站推广的意义和方法
  • 学做网站有多难西安百度网站快速优化
  • 专注小程序定制开发飓风seo刷排名软件
  • 免费申请香港网站爱站网的关键词是怎么来的
  • 足球教学网站直通车推广怎么收费
  • 默认网站 域名 网站绑定西安seo报价
  • 网站建设价目软文大全800字
  • 政务网站建设管理专业地推团队
  • 免费打广告网站社交网络的推广方法有哪些
  • 网站前端设计与制作营销策划书范文案例
  • cms网站源码百度快照查询
  • 中小型网站有哪些抖音代运营
  • 太原中小学网站建设代发广告平台
  • 单页网站快速收录北京广告公司
  • 东台做网站百度广告联盟怎么加入
  • 品牌网站建设h合肥网站开发的一般流程
  • 哪里有手机网站定制服务器中国搜索引擎排名2021
  • 留学网站建设文案网络营销和直播电商专业学什么
  • 做网站建设公司赚钱江西百度推广公司
  • 交友app搭建百度网站怎么优化排名
  • 一个人做运营网站网站统计数据分析
  • 如何给一个公司做网站营销案例最新
  • 东莞产品网站建设公司百度竞价托管一月多少钱
  • 网站服务提供商seo分析师
  • 婚庆网站建设公司seo站内优化技巧
  • 手表商城网站建设方案湖南长沙疫情最新消息
  • 老年夫妻做爰视频网站seo策略工具
  • 南京市建委网站下载中心建设工程招标百度关键词是怎么排名靠前