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

网站开发基础课程论坛网站模板

网站开发基础课程,论坛网站模板,网站建设与网页设计的论文,嘉兴微信网站所有的算法都是这样#xff0c;算法思想最重要#xff0c;其次是实现过程#xff0c;最后才是实现的代码 上战伐谋#xff0c;我们只要明确了其算法思想和实现过程#xff0c;所有算法都是纸老虎#xff0c;所有算法题都是纸老虎 笔者才疏学浅#xff0c;也算是刚刚接…所有的算法都是这样算法思想最重要其次是实现过程最后才是实现的代码 上战伐谋我们只要明确了其算法思想和实现过程所有算法都是纸老虎所有算法题都是纸老虎 笔者才疏学浅也算是刚刚接触算法暂时总结不出思想但是笔者相信只要坚持下去总有一天一定可以领悟到 冒泡排序和选择排序 手撕冒泡排序和选择排序 之前写的这篇博客讲的很清楚了这里只展示代码 public static void bubbleSort(int[] arr){for(int j 0; jarr.length; j){for(int i 0;iarr.length - 1; i) {// 唯一需要注意的点循环n-1次让i1遍历到数组末尾即可if(arr[i1] arr[i]) {int temp arr[i];arr[i] arr[i1];arr[i1] arr[i];}}} }public static void selectSort(int[] arr){for (int i 0; i arr.length; i) {// 假设第一个是最小的所以当然minIndex iint min arr[i];int minIndex i;// 内层抓数字和未排好的数字序列的第一个数字进行比较下标当然从i1开始for (int j i 1; j arr.length; j) {if (arr[j] min) {// 替换新的minmin arr[j];// 记录更小数字的下标minIndex j;}}// 普通交换/*int temp arr[i];arr[i] arr[minIndex];arr[minIndex] temp;*/// 进阶交换我们发现arr[minIndex] min所以不需要再定义一个中间变量temp// 同时arr[i]只有一份所以不能先辅助arr[i]arr[minIndex] arr[i];arr[i] min;}} }插入排序 插入排序不断插入后续数字并且保证有序性所以被称为插入排序 要点 默认第一个数字有序逐渐递增有序序列内层循环实际上是冒泡排序的倒排 public static void insertSort(int[] arr) {// 因为默认第一个数字有序所以i从1开始i指针循环n-1次for (int i 1; i arr.length; i) {// j从i开始逐渐向后移动// 因为比较的是arr[j]和arr[j-1]所以j要1 for (int j i; j 1; j--) {// 如果arr[j]前一个数字比arr[j]大就交换位置if (arr[j] arr[j - 1]) {int temp arr[j];arr[j] arr[j - 1];arr[j - 1] temp;}}}}希尔排序 插入排序存在插入的小数字越小位置越靠后后移的次数越多的问题实际上会形成很多多余的交换位置 希尔排序就是为了解决这个问题而诞生的在**“最后的交换”**之前先让大数字尽可能往后移动小数字尽可能往前移动 这里的**“最后的交换”**实际上就是插入排序 是的你没听错希尔排序的最后一轮交换实际上就是插入排序 希尔排序运用了分组的思想 先分成n/2组然后是n/4……最后step 1时就是插入排序 public static void shellSort(int[] arr) {int step arr.length / 2;// 只要步长不是0就一直循环while (step ! 0) {// i指针先从步长位置开始循环for (int i step; i arr.length; i) {// 比较arr[j]和arr[jstep]的大小保证组内有序for (int j i - step; j 0; j--) {if (arr[j] arr[j step]) {int temp arr[j];arr[j] arr[j step];arr[j step] temp;}}}// 每次循环步长减半step / 2;}} 基数排序 又叫桶排序 排序方法很简单就是先比较数字的个位然后比较十位比较百位……最后就能排号序 但是实现起来比较复杂有很多需要注意的细节 个人认为八大排序里面除了快排和归并其次最难写的就是基数排序 public static void bucketSort(int[] arr) {int max arr[0];for (int ele : arr) {max Math.max(ele, max);}int maxLength ( max).length();// 1. 先定义好0~9十个桶,桶高是数组的长度int[][] baseBucket new int[10][arr.length];// 2. 桶计数器int[] bucketCount new int[10];for (int m 1; m maxLength; m) {int m1 1;// 循环数组获取个位数据放到桶中for (int i 0; i arr.length; i) {// 求余数int left (arr[i] / m1) % 10;// 查询目前桶中本列下一个插入位置int height bucketCount[left];// 插入baseBucket[left][height] arr[i];// 桶计数器1bucketCount[left] bucketCount[left];}m1 m1 * 10;// 下策遍历二维数组取出数字// 上策遍历桶计数器,不等于0就放进arrint i 0;for (int j 0; j 10; j) {if (bucketCount[j] ! 0) {for (int k 0; k bucketCount[j]; k) {arr[i] baseBucket[j][k];i;}// 下策新创建一个桶计数器// 上策清空桶计数器// 用完就清空bucketCount[j] 0;}}}}堆排序 堆排序排序思想排序流程代码 这篇博客写的很清楚了这里只展示代码 public static void heapSort(int[] arr) {for (int p arr.length; p 0; p--) {sort(arr, p, arr.length);}for (int i arr.length - 1; i 0; i--) {int temp arr[0];arr[0] arr[i];arr[i] temp;sort(arr, 0, i);}}public static void sort(int[] arr, int parent, int length) {int maxChild 2 * parent 1;while (maxChild length) {int rightChild maxChild 1;if (rightChild length arr[rightChild] arr[maxChild]) {maxChild rightChild;}if (arr[parent] arr[maxChild]) {int temp arr[parent];arr[parent] arr[maxChild];arr[maxChild] temp;parent maxChild;maxChild 2 * maxChild 1;} else {break;}}}
http://www.hkea.cn/news/14424849/

相关文章:

  • 网站登录界面模板html域名代理商网站
  • 台州网站公司建站小程序制作难吗
  • 本溪做网站的公司好的网站布局
  • 网站怎么做直通车推客易可以做自己的网站吗
  • 站长之家素材做app推广上哪些网站吗
  • 用asp做的网站如何发布住房及城乡建设部网站
  • 荥阳网站制作如果做vr参观网站
  • 牛二网站建设wordpress吃内存
  • 网站内容计划wordpress 调用相册
  • 厦门市建设局网站做图片详情网站
  • 网站建设app手机下载织梦怎么做门户网站
  • html网站登录界面模板wordpress arduino
  • 广东网站建设公司网络服务海口seo关键词优化
  • 重庆品牌网站建设公司排名北京房产
  • 网站快速盈利做网站绑定 对应的域名
  • 有哪些网站制作公司网络安全设计方案
  • 大气的企业网站源码新手机发布
  • 网站建设标书微网站的搭建
  • 网站开发vsc网站开发公司公司做网站好吗
  • 东莞网站建设模板报价网站建设的小结
  • 连接国外网站做端口映射网站运营做哪些工作呢
  • wordpress做淘宝客网站达州建网站
  • 做旅游景区网站北京 网站建设公司
  • 网站编程培训公司这样做自己的网站
  • 海拉尔网站开发电商平面ui设计是什么
  • 海南城乡建设庁网站做网站 注意
  • 天津做网站多少钱免费网页制作成品下载
  • 怎么什么软件可以吧做网站什么是网站名称
  • 大学生做家教网站wordpress 4.8.3
  • 诸暨网站制作有哪些公司wordpress律师模板