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

做网站所用的工具深圳福田专业网站建设

做网站所用的工具,深圳福田专业网站建设,网站推广策划书的特点有哪些,中国外贸出口网站1.冒泡排序(Bubble Sort) 原理 重复遍历数组,比较相邻元素,若顺序错误则交换。每趟将最大元素"冒泡"到末尾。 每次遍历保证了最大元素被放在最后,所以内层循环不需要遍历到最后的位置。 代码实现 public …

1.冒泡排序(Bubble Sort)

原理

        重复遍历数组,比较相邻元素,若顺序错误则交换。每趟将最大元素"冒泡"到末尾。

        每次遍历保证了最大元素被放在最后,所以内层循环不需要遍历到最后的位置。

代码实现
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;}}}
}
复杂度
  • 时间:平均/最坏 O(n²),最好 O(n)(已排序时)

  • 空间:O(1)

  • 稳定性:稳定

2.选择排序(Selection Sort)

原理

        每次从未排序部分选择最小元素,与未排序部分的第一个元素交换位置。

        首次遍历时,选择整个数组中的最小元素将其与第一个元素交换位置,第二次循环中只需要在除第一个元素以外的全部元素中(n-1个元素)找出最小元素将其放在全部元素的第二个位置上,以此类推...

代码实现
public static void selectionSort(int[] arr) {int n = arr.length;for (int i = 0; i < n-1; i++) {int minIndex = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}// 交换最小元素到前面int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}
}
复杂度
  • 时间:O(n²)

  • 空间:O(1)

  • 稳定性:不稳定

3.插入排序(Insertion Sort) 

原理

        将未排序元素逐个插入已排序部分的正确位置,类似整理扑克牌。

        插入排序与选择排序的区别是,不再每次遍历未排序的数组,而是直接将未排序的数组中第一个元素在已经排序的数组中找到相对位置,并放入。第一次排序则是直接放在自己的位置上

代码实现
public static void insertionSort(int[] arr) {int n = arr.length;for (int i = 1; i < n; i++) {int current = arr[i];int j = i - 1;while (j >= 0 && arr[j] > current) {arr[j+1] = arr[j]; // 后移元素j--;}arr[j+1] = current; // 插入正确位置}
}
复杂度
  • 时间:平均/最坏 O(n²),最好 O(n)

  • 空间:O(1)

  • 稳定性:稳定

4.归并排序(Merge Sort) 

原理

        分治法,将数组递归分成两半排序后合并。合并时比较两个子数组的元素。

代码实现
public static void mergeSort(int[] arr, int left, int right) {if (left < right) {int mid = (left + right) / 2;mergeSort(arr, left, mid);mergeSort(arr, mid+1, right);merge(arr, left, mid, right);}
}private static void merge(int[] arr, int left, int mid, int right) {int[] temp = new int[right - left + 1];int i = left, j = mid+1, k = 0;while (i <= mid && j <= right) {if (arr[i] <= arr[j]) temp[k++] = arr[i++];else temp[k++] = arr[j++];}while (i <= mid) temp[k++] = arr[i++];while (j <= right) temp[k++] = arr[j++];System.arraycopy(temp, 0, arr, left, temp.length);
}
复杂度
  • 时间:O(n log n)

  • 空间:O(n)(合并需要额外空间)

  • 稳定性:稳定

5.快速排序(Quick Sort) 

原理

        选基准值(pivot),将数组分为小于和大于基准的两部分,递归排序子数组。

        挑选出一个基准值,标记数组两头的的元素,不断比较两侧元素与基准值的关系,如果左侧元素比基准值大,则其与基准值交换位置;如果右侧元素比基准值小,则其与基准值交换位置。否则左右两侧不断向内收缩,直到左右两侧位置重合相遇。

代码实现
public static void quickSort(int[] arr, int low, int high) {if (low < high) {int pivotIndex = partition(arr, low, high);quickSort(arr, low, pivotIndex-1);quickSort(arr, pivotIndex+1, high);}
}private 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++;swap(arr, i, j);}}swap(arr, i+1, high);return i+1;
}private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;
}
复杂度
  • 时间:平均 O(n log n),最坏 O(n²)(已排序且基准选择不当)

  • 空间:O(log n)(递归栈)

  • 稳定性:不稳定

6.堆排序(Heap Sort) 

原理

        构建最大堆,将堆顶元素(最大值)与末尾元素交换,调整剩余部分为堆。

代码实现
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--) {swap(arr, 0, i);heapify(arr, i, 0);}
}private static void heapify(int[] arr, int n, int i) {int largest = i;int left = 2*i + 1, 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) {swap(arr, i, largest);heapify(arr, n, largest);}
}
复杂度
  • 时间:O(n log n)

  • 空间:O(1)

  • 稳定性:不稳定

 总结

排序算法平均时间复杂度空间复杂度稳定性
冒泡排序O(n²)O(1)稳定
选择排序O(n²)O(1)不稳定
插入排序O(n²)O(1)稳定
归并排序O(n log n)O(n)稳定
快速排序O(n log n)O(log n)不稳定
堆排序O(n log n)O(1)不稳定
http://www.dtcms.com/wzjs/561919.html

相关文章:

  • 高端网站制作系统电视剧百度搜索风云榜
  • 建立网站顺序网站颜色配色
  • 建设银行申请信用卡网站首页塘厦镇网站建设
  • 重庆站外推广网站广州做网站比较有名的公司
  • 连云港网站关键词游戏公司排行榜前十名
  • 湖南株洲建设局网站网站建设前期目标
  • 怎样做淘宝的导购网站推广如何免费建立一个自己的网站
  • 和平网站建设公司域名管理
  • 各省网站备案时长南昌所有建设工程网站
  • 全屏网站模板想搞一个自己的网站怎么做
  • wordpress评论提交特效废品回收网站怎么做网站优化
  • 扁平式风格网站网站建设与维护目录
  • 潍坊市城市建设官网站搜索引擎营销是指
  • 怎么样查询网站被挂黑链蚌埠网站制作公司哪家好
  • 小程序怎么做优惠券网站网站空间在线解压
  • 黄岛网站建设公司哪家好开网店的流程及程序
  • 英文学习网站wordpress搜索错误
  • 网站建设的整个过程展览公司网站模板
  • 2015做外贸网站好做吗wordpress 查看全文
  • 温州集团网站建设温州通告最新
  • 在线阅读小说网站怎么做网站域名后缀有什么用
  • dede网站模板怎么安装教程网站的制作哪家好
  • 新彊生产建设兵团网站网络营销外包公司的评价
  • 网站策划书范文模板wordpress文件读取漏洞
  • jn建站系统官网wordpress 验证码插件
  • 网站建设相关优化青浦网站建设
  • 秦皇岛网站建设哪家好免费logo设计网址
  • 厦门网站建设屈兴东网络营销模式课
  • 库存网站建设定制北京网站开发公司飞沐
  • 北京网站推广排名外包青岛标志设计公司