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

网站开发主要框架 后端陕西省建设工程招投标信息网官网

网站开发主要框架 后端,陕西省建设工程招投标信息网官网,ps响应式网站设计尺寸,双通网络网站建设一#xff0c;C语言#xff0c;主流的排序方法介绍 当谈论主流的排序方法时#xff0c;通常指的是在实际应用中表现优秀且被广泛采用的排序算法。以下是常见的主流排序方法及其介绍、时间复杂度、空间复杂度和简单的C语言代码实现#xff1a; 冒泡排序#xff08;Bubble S…一C语言主流的排序方法介绍 当谈论主流的排序方法时通常指的是在实际应用中表现优秀且被广泛采用的排序算法。以下是常见的主流排序方法及其介绍、时间复杂度、空间复杂度和简单的C语言代码实现 冒泡排序Bubble Sort 介绍冒泡排序是一种简单的交换排序算法。它重复地遍历要排序的列表依次比较相邻的两个元素如果顺序不对则交换它们直到整个列表排好序为止。时间复杂度平均情况和最坏情况下都是 O(n^2)。空间复杂度O(1)。代码实现 public class BubbleSort {public static void bubbleSort(int[] arr) {int n arr.length;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;}}}}public static void main(String[] args) {int[] arr {64, 34, 25, 12, 22, 11, 90};bubbleSort(arr);System.out.print(冒泡排序结果);for (int num : arr) {System.out.print(num );}} }rr[] {64, 34, 25, 12, 22, 11, 90};int n sizeof(arr) / sizeof(arr[0]);bubbleSort(arr, n);printf(冒泡排序结果);for (int i 0; i n; i) {printf(%d , arr[i]);}return 0; } 快速排序Quick Sort 介绍快速排序是一种高效的分治排序算法。它选择一个元素作为基准通常选择第一个或最后一个元素然后将列表分为比基准小和比基准大的两部分再对这两部分进行递归排序。时间复杂度平均情况下为 O(n log n)最坏情况下为 O(n^2)当基准选取不合理时。空间复杂度平均情况下为 O(log n)最坏情况下为 O(n)当递归树不平衡时。代码实现 public class QuickSort {public static 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);}}public static 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;int temp arr[i];arr[i] arr[j];arr[j] temp;}}int temp arr[i 1];arr[i 1] arr[high];arr[high] temp;return i 1;}public static void main(String[] args) {int[] arr {64, 34, 25, 12, 22, 11, 90};int n arr.length;quickSort(arr, 0, n - 1);System.out.print(快速排序结果);for (int num : arr) {System.out.print(num );}} } 插入排序Insertion Sort 介绍插入排序是一种简单直观的排序算法。它通过构建有序序列逐步将未排序元素插入到有序序列的正确位置中。时间复杂度平均情况和最坏情况下都是 O(n^2)。空间复杂度O(1)。 代码实现 public class InsertionSort {public static void insertionSort(int[] arr) {int n arr.length;for (int i 1; i n; i) {int key arr[i];int j i - 1;while (j 0 arr[j] key) {arr[j 1] arr[j];j--;}arr[j 1] key;}}public static void main(String[] args) {int[] arr {64, 34, 25, 12, 22, 11, 90};insertionSort(arr);System.out.print(插入排序结果);for (int num : arr) {System.out.print(num );}} } 归并排序Merge Sort 介绍归并排序是一种高效的分治排序算法。它将列表不断地分成两半递归地对每个子列表进行排序然后将两个已排序的子列表合并成一个有序列表。时间复杂度平均情况和最坏情况下都是 O(n log n)。空间复杂度O(n)。代码实现 public class MergeSort {public static void merge(int[] arr, int left, int middle, int right) {int n1 middle - left 1;int n2 right - middle;int[] L new int[n1];int[] R new int[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;}}public static 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);}}public static void main(String[] args) {int[] arr {64, 34, 25, 12, 22, 11, 90};int n arr.length;mergeSort(arr, 0, n - 1);System.out.print(归并排序结果);for (int num : arr) {System.out.print(num );}} } 堆排序Heap Sort 介绍堆排序利用堆这种数据结构进行排序。它首先将列表构建为最大堆或最小堆然后重复提取堆顶元素并调整堆直到整个列表排好序。时间复杂度平均情况和最坏情况下都是 O(n log n)。空间复杂度O(1)。 -代码实现 public class HeapSort {public static 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);}}public static void heapSort(int[] arr) {int n arr.length;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);}}public static void main(String[] args) {int[] arr {64, 34, 25, 12, 22, 11, 90};heapSort(arr);System.out.print(堆排序结果);for (int num : arr) {System.out.print(num );}} } 二总结 当我们对上面列出的主流排序算法进行总体分析时可以从它们的优缺点和适用场景等方面来考虑 冒泡排序 优点实现简单代码易于理解和编写。缺点在平均情况和最坏情况下时间复杂度较高O(n^2)不适用于大规模数据排序。适用场景适用于数据规模较小且数据基本有序的情况或作为学习排序算法的入门例子。 快速排序 优点平均情况下性能较好O(n log n)是主流排序算法中速度最快的一种。缺点在最坏情况下当基准选取不合理时可能出现性能下降O(n^2)。适用场景适用于大多数情况下的排序需求特别是数据规模较大的情况。 插入排序 优点对于小规模数据或基本有序的数据排序效率较高。缺点在数据规模较大时性能下降O(n^2)。适用场景适用于数据规模较小、基本有序或已近排序的情况也适用于较短数组的排序。 归并排序 优点稳定的排序算法不受输入数据的影响。在任何情况下都具有相对较好的性能O(n log n)。缺点需要额外的空间来存储临时数据空间复杂度较高。适用场景适用于任何规模的数据排序需求尤其在对稳定性和性能要求较高的场景下。 堆排序 优点性能稳定对于大规模数据的排序效率较高。缺点不稳定排序算法不适用于需要保持原始顺序的情况。适用场景适用于大规模数据的排序需求尤其是需要高效率且不关心排序稳定性的情况。 根据上述分析不同的排序算法适用于不同的情况。在实际应用中可以根据以下几点考虑选择合适的排序算法 数据规模对于小规模数据可以考虑插入排序、冒泡排序等对于大规模数据可以优先考虑快速排序、归并排序或堆排序。数据状态如果数据已经基本有序插入排序和冒泡排序可能会更快如果数据随机分布或无序快速排序通常表现较好。稳定性要求如果需要保持相等元素的相对顺序不变应该选择稳定的排序算法如归并排序。内存使用如果内存空间有限应该选择空间复杂度较低的排序算法如堆排序。 综合考虑以上因素选择合适的排序算法将有助于提高程序的性能和效率。在实际开发中根据具体的应用场景和数据特点来选择排序算法进行性能优化是非常重要的。
http://www.pierceye.com/news/943445/

相关文章:

  • 装饰网站建设软件下载公司旅游视频网站模板免费下载
  • aws网站建设个体户做网站去哪里做
  • 用四字成语做网站域名好吗宁波网站推广专业服务
  • 深圳网站建设公司是网络推广网上营销
  • 网站视频站建设教程和仿qq商城版淘宝客网站源码模板+带程序后台文章dede织梦企业程序
  • 温州红酒网站建设长沙移动网站建设
  • 如何制作网站?企业网站制作步骤
  • 桓台县旅游网站建设购物网站建设技术难点
  • 单页网站推广网站qq链接怎么做
  • wordpress仿站步骤平乡网站建设
  • 青岛高端网站建设公司新网站seo技术
  • 手机网站后台甘肃网络推广技巧
  • 做co网站阿里云建站方案
  • 如何做网站首页优化怎么查网站点击量
  • 北京网站制作百度推广潜江资讯网二手房出售
  • 北京建网站软件深圳企业网站
  • 网站关键词互点备案网站简介怎么写
  • 网站建设报告书范文哈尔滨网站公司哪家好
  • 景观毕业设计作品网站公司网站销售平台建设费分录
  • 品牌网站建设还来大蝌蚪华为手机WordPress
  • 东莞制作企业网站公司网站营销活动页面制作
  • 有中文网站 怎么做英文网站企业网站建设 价格
  • 网络游戏网站开发建设工程施工合同样本
  • 陕西网站制作公司泸州中泸集团建设有限公司网站
  • 营销型网站建设的概念电子商务公司最低注册资本
  • 计划书网站推广的目录怎么做太原便宜做网站的公司哪家好
  • wordpress 直播插件麒麟seo外推软件
  • 网站检测报告哪里做寰宇seo
  • 徐州微信网站建设网站建设员课程
  • 做现货需要关注的网站wordpress+游戏网站