冒泡排序

冒泡排序

心不动则不痛 提交于 2019-12-04 18:19:30
package blog; import java.util.Arrays; public class bubble { public static void main(String[] args) { int[] a = new int[] {9,5,7,4,0,3}; asc(a); System.out.println(Arrays.toString(a)); } static void asc(int [] arr) { int temp; for(int i=0;i<arr.length-1;i++) { for(int j=0;j<arr.length-1-i;j++) { if(arr[j+1] < arr[j]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } }    来源: https://www.cnblogs.com/wangsihui/p/11877106.html

冒泡排序

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 18:18:13
package blog; import java.util.Arrays; public class bubble { public static void main(String[] args) { int[] a = new int[] {9,5,7,4,0,3}; asc(a); System.out.println(Arrays.toString(a)); } static void asc(int [] arr) { int temp; for(int i=0;i<arr.length-1;i++) { for(int j=0;j<arr.length-1-i;j++) { if(arr[j+1] < arr[j]) { temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } } }    来源: https://www.cnblogs.com/wangsihui/p/11877065.html

冒泡排序

橙三吉。 提交于 2019-12-04 13:31:19
for ( int b=0;b<arr.length-1;b++){ for ( int a=0;a<arr.length-1;a++){ if (arr[a]>arr[a+1]){ int temp = arr[a]; arr[a] =arr[a+1]; arr[a+1] = temp ; } } } for ( int i:arr){ System. out .println(i); } } 来源: https://www.cnblogs.com/beimo/p/11867791.html

算法类面试题

霸气de小男生 提交于 2019-12-04 08:09:50
1、算法---栈 判断括号成对出现 sdfj(nrg(lj()k)nk)sldjwef 合法 q(wdwf()hknkql(whdq)w) 合法 hk)nqeif)liq(h(flq)wj( 不合法 思路:   括号存在嵌套关系,也存在并列关系 可以遍历字符串的每一个字符,使用栈来处理: (1)遇到左括号,把左括号压入栈中 (2)遇到右括号,判断栈是否为空,为空说明没有左括号与之对应,则不合法。如果栈不为空,则移除栈顶的左括号---这对括号抵消了 当遍历结束后,如果栈是空的则合法,否则不合法 2、冒泡排序 // 冒泡排序 let arr = [1, 6, 3, 7, 5, 9, 2, 8]; function sort(arr) { // 升序 console.time("冒泡排序耗时") let num = null for (let i = 0; i < arr.length - 1; i++) { // 外层循环的作用是:每次循环找出一个最大数放在这个数组的最后面 for (let j = 0; j < arr.length - i - 1; j++) { // 内层循环的作用是:比较相邻两个数的大小从而进行交换位置 // 借助一个中间容器交换位置 if (arr[j] > arr[j + 1]) { num = arr[j] arr[j] = arr[j + 1] arr

简单排序算法之冒泡排序

家住魔仙堡 提交于 2019-12-04 06:48:53
冒泡排序 ①基本思想: 两个数比较大小,较大的数下沉,较小的数冒起来。 ②算法描述: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 ③动图演示(来源参考资料) ④代码实现 1 public class maoPaoDemo{ 2 public static void main(String[] args){ 3 int[] arr = {12,5,7,9,10,70,56,2,105,6}; 4 for(int i=0;i<arr.length-1;i++){ 5 for(int j=0;j<arr.length-i-1;j++){ 6 if(arr[j]>arr[j+1]){ 7 int temp=0; 8 temp=arr[j]; 9 arr[j]=arr[j+1]; 10 arr[j+1]=temp; 11 } 12 } 13 } 14 for(int i=0;i<arr.length;i++){ 15   System.out.print(arr[i]+" "); 16 } 17 } 18 } 参考资料: https://www.toutiao

Python vs PHP 冒泡排序和累加求和计算性能测试

て烟熏妆下的殇ゞ 提交于 2019-12-04 06:02:04
测试环境 : 处理器i5-3230M,64位Ubuntu 14.04 Python 2.7.6, PHP 5.4.39, PHP 7.0.0-dev(2015/04/21) 测试内容: 冒泡排序:对10个升序的数进行排序,降序输出,循环1百万次. 累加求和:0+1+2+3+...+99999999 冒泡排序测试结果对比: 程序: Python PHP5 PHP7 耗时: 16.910s 14.715s 8.011s 内存: 35.8m 9.0m 12.5m Python改用xrange后,内存占用为4.8MB,耗时为16.784s. 累加求和测试结果对比: 程序: Python PHP5 PHP7 耗时: 10.057s 3.855s 1.855s 内存: 3.039g 8.9m 12.5m 使用range时,Python内存占用达到3GB,改为xrange后,内存占用为4.8MB,耗时为9.460s. 结论: Python和PHP都是动态脚本语言,都没有JIT机制,所以测试是公平的. Python计算性能根本比不上PHP5,跟PHP7差距更大,所以就别黑PHP计算不如Python了. PHP是 自己编译的 ,启用了很多内建的功能,所以测试中内存占用会比Python多一些. 下面是详细测试过程: Python冒泡排序: def bubble_sort(lst): length =

冒泡排序

北战南征 提交于 2019-12-04 05:41:48
1 package com.sort.demo; 2 3 public class BubbleSort { 4 public static void sort(int[] arr){ 5 if (arr==null|arr.length<2){ 6 return; 7 } 8 //定义每次排序的结束点,每次排序时都会把最大数放在end位置,所以下一次排序结束点是end-- 9 for (int end=arr.length-1;end>0;end--){ 10 //从index 0 到end进行循环,每次把大的数放到最末尾的end位置 11 for (int i=0;i<end;i++){ 12 if (arr[i]>arr[i+1]){ 13 swap(arr,i,i+1); 14 } 15 } 16 } 17 } 18 public static void swap(int[] arr,int i, int j){ 19 int a=arr[i]; 20 arr[i]=arr[j]; 21 arr[j]=a; 22 } 23 24 public static void main(String[] args) { 25 int[] a=new int[]{4,2,5,7,1,3,9}; 26 BubbleSort.sort(a); 27 for (int i = 0; i <

Leetcode99 恢复二叉搜索树

空扰寡人 提交于 2019-12-04 02:31:43
写在题目前的话 : 第一次写这个博客以后我发现我 理解错了题目 ,但是我的问题 更具有一般性,更复杂, 所以文章就不改了 题目:只有 两个 结点被错误的交换。 我的:有 任意多个 结点被错误的交换。 题目: 先分析题目:使用O(n)空间复杂度的解法很容易实现,那么我们先看看很容易实现是怎实现的。 算法1: 1、中序遍历二叉树,并将中序序列保存在一个数组Numbers中 2、对Numbesr进行排序 3、中序遍历二叉树,并用Numbers序列按遍历顺序覆盖掉二叉树中的每一个值 此算法即是我想到的空间复杂度为O(n)容易的解法 123的时间复杂度分别为O(N), O(NlogN), O(N),因此上述算法时间复杂度为O(NlogN) 接下来,看一下使用常数空间怎么解决这个问题。 先注意一点 void recoverTree(TreeNode* root) 通过题目给的接口函数可以看出,是值传递。因此通过对原树进行遍历并重新构建一个新树,再把新树根结点赋值给root的方法是不成立的,而且题目说明,树的结构不发生改变,也能够理解到,这个题目是要直接交换树结点的值。 根据之前算法1的启发,其实要做的就是对二叉树进行排序,使得其中序遍历序列为有序序列即可。而中序遍历能够得到什么? 能得到一个按次序访问的结点序列,如果每次访问下一个结点之前,都记录一个之前访问的结点,那么就可以得到一对相邻结点。