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

河北网站开发联系电话一站式织梦网站模板

河北网站开发联系电话,一站式织梦网站模板,建设网站的运行费包括什么地方,黄金网站排序算法 冒泡排序 时间和空间复杂度 要点 每轮冒泡不断地比较比较相邻的两个元素,如果它们是逆序的,则需要交换它们的位置下一轮冒泡,可以调整未排序的右边界,减少不必要比较 代码 public static int[] test(int[] array) {// 外层循环控制遍历次数for (int i 0; i <…

排序算法

冒泡排序

时间和空间复杂度

要点

  • 每轮冒泡不断地比较比较相邻的两个元素,如果它们是逆序的,则需要交换它们的位置
  • 下一轮冒泡,可以调整未排序的右边界,减少不必要比较

代码

public static int[] test(int[] array) {// 外层循环控制遍历次数for (int i = 0; i < array.length; i++) {// 内层循环控制每轮比较和交换for (int j = 0; j < array.length - i - 1; j++) {// 比较相邻两元素大小if (array[j] > array[j + 1]) {// 交换元素位置int temp = array[j + 1];array[j + 1] = array[j];array[j] = temp;}}}// 返回排序后的数组return array;
}

测试结果

public static void main(String[] args) {int[] array = {3,1,2,4,7,9};int[] ary = test(array);System.out.println(Arrays.toString(ary));}

选择排序

时间和空间复杂度

要点

  • 每一轮选择,找出最大(最小)的元素,并把它交换到合适的位置

代码

public static int[] test(int[] array) {// 外循环遍历数组元素for (int i = 0; i < array.length; i++) {// 内循环从当前元素的下一个元素开始比较for (int j = i+1; j < array.length; j++) {// 如果前一个元素大于后一个元素,交换它们的位置if(array[i] > array[j]){int temp = array[j];array[j] = array[i];array[i] = temp;}}}// 返回排序后的数组return array;}

测试结果

public static void main(String[] args) {int[] array = {3,1,2,4,7,9};int[] ary = test(array);System.out.println(Arrays.toString(ary));}

堆排序

时间和空间复杂度

要点(如果这里看不懂的话,是需要去了解大顶堆这个数据结构的)

  • 建立大顶堆
  • 每次将堆顶元素最大值,交换到末尾,调整堆顶元素,让它重新符合大顶堆特性

代码

import java.util.Arrays;public class Heap {int[] array; // 存储堆元素的数组int size;    // 堆的大小public Heap(int capacity) {this.array = new int[capacity];}public Heap(int[] array){this.array = array;this.size = array.length;heapify(); // 调用堆化方法,构建堆}/*** 建立堆*/private void heapify() {// 建立堆的过程实际上是找到最后一个非叶子节点for (int i = size/2-1; i >=0 ; i--) {// 接下来的循环中,i 是当前非叶子节点的索引down(i); // 对当前非叶子节点进行下潜操作,保证满足堆的性质}}// 下潜操作private void down(int i) {int left = i * 2 + 1; // 左子节点索引int right = left + 1; // 右子节点索引int max = i;          // 初始化最大值索引为当前节点// 判断左子节点是否存在且大于当前节点if (left < size && array[left] > array[max]) {max = left;}// 判断右子节点是否存在且大于当前节点if (right < size && array[right] > array[max]) {max = right;}if (max != i) {// 交换当前节点与最大值节点swap(max, i);// 递归调用下潜操作,保证交换后的子树仍然满足堆的性质down(max);}}// 交换数组中两个位置的元素private void swap(int a, int b) {int temp = array[a];array[a] = array[b];array[b] = temp;}
}public static void main(String[] args) {int[] array = {1,2,3,4,5,6,7};Heap heap = new Heap(array);// 堆排序while (heap.size > 1) {// 将堆顶元素与堆尾元素交换heap.swap(0, heap.size - 1);// 堆大小减一heap.size--;// 对交换后的堆顶元素进行下潜操作,保证仍然满足堆的性质heap.down(0);}System.out.println(Arrays.toString(heap.array));
}

测试结果

插入排序

时间和空间复杂度

要点

  • 将数组分为两部分[0----low-1][low----a.length-1]
    • 左边[0-----low-1]是已排序部分
    • 右边[low------a.length-1]是未排序部分
  • 每次从未排序区域取出low位置的元素,插入到已排序区域

代码

  

public static int[] test(int[] array) {// 外层循环,从数组第二个元素开始for (int low = 1; low < array.length; low++) {// 记录当前元素值int t = array[low];// 从当前元素的前一个位置开始向前查找插入位置int i = low - 1;while (i >= 0 && t < array[i]) {// 如果当前元素小于已排序元素,将已排序元素后移一位array[i + 1] = array[i];i--;}// 找到插入位置,将当前元素插入if (i != low - 1) {array[i + 1] = t;}}// 返回排序后的数组return array;}

测试结果

public static void main(String[] args) {int[] array = {3,1,2,4,7,9};int[] ary = test(array);System.out.println(Arrays.toString(ary));}

希尔排序

时间和空间复杂度

要点

  • 简单来说,就是分组实现插入,魅族元素间隙称为hap
  • 每轮排序之后gap逐渐变小,直到gap为1完成排序
  • 对插入排序的优化,让元素更快地交换到最终位置

代码

public static int[] test(int[] array) {// 此时的gap就是间隙for (int gap = array.length >> 1; gap >= 1 ; gap = gap >> 1) {for (int low = gap; low < array.length ; low++) {// 记录当前位置的元素值int t = array[low];// 初始化比较位置为当前位置的前一个位置int i = low - gap;// 当比较位置合法且当前元素值小于比较位置的元素值时进行插入排序while (i >= 0 && t < array[i]){// 将比较位置的元素往后移动gap个位置array[i + gap] = array[i];// 更新比较位置为前一个gap位置i -= gap;}// 如果实际插入位置不是当前位置的前一个gap位置,则进行插入操作if (i != low - gap){array[i + gap] = t;}}}// 返回排序后的数组return array;}

测试结果

public static void main(String[] args) {int[] array = {3,1,2,4,7,9};int[] ary = test(array);System.out.println(Arrays.toString(ary));}

http://www.yayakq.cn/news/16223/

相关文章:

  • 电商网站开发实训心得系统客户管理软件
  • 广播电台网站建设板块金融投资网站
  • 公司做网站费用做一个外贸网站
  • 电影网站开发现状seo值怎么提高
  • 大德通网站建设优秀的广告设计作品
  • 用ps做网站画布一般建多大针对百度关键词策划和seo的优化
  • html可视化编辑器seo排名点击器曝光行者seo
  • 做网站开发学什么内容工程设计有限公司
  • 做网站推广的工资手机能搭建网站吗
  • 个人身份调查网站广东网站建设电话
  • 浙江省建设注册管理中心网站首页平面设计素材图库
  • 绍兴网站关键词优化WordPress mk主题
  • 深圳市网站建设做网站大地seo视频
  • 北京网站seo收费标准WordPress小工具可以做什么
  • 营销型网站有哪些app智能产品设计案例
  • 高校网站建设规范amp 网站开发
  • 上海一 网站建设公司网页制作培训班前景
  • 知名企业愿景网络优化的内容包括哪些方面
  • 苏州退工在哪个网站做企业服务公司起名
  • 网站怎么搭建公司变更通知
  • 潍坊营销型网站建设wordpress企业模板免费
  • 企业网站优化内容wordpress设置jetpack失败
  • 网站的定位与功能百度竞价推广账户
  • 网站换域名有没有影响吗自己制作微信小程序
  • 企业网站包含的内容wordpress上传主题直接使用
  • 网站建设论文要求黄冈网站推广策略
  • linux网站建设技术指南 百度网盘佛山优化网站排名收费
  • 百度下载appseo关键词优化推广报价表
  • 手机网站调用分享网络哪里能接活做网站
  • 做钻石的网站品牌营销名词解释