算法中交换两个数据

这两天搞服务器有点呆呆的。(⊙o⊙)(⊙o⊙)

在这里用冒泡排序demo  来说明。

第一种 最low的一种  借助中间变量   line 5 6 7

 1     function bubble(arr) {
 2         for (var i = 0, length = arr.length; i < length; i++) {
 3             for (var j = 0; j < length -1 -i; j++) {
 4                 if (arr[j] > arr[j+1]) {
 5                     var temp = arr[j];
 6                     arr[j] = arr[j+1];
 7                     arr[j+1] = temp;
 8                 }
 9             }
10         }
11         return arr;
12     }

第二种  不借助中间变量 line 5 6 7

 1 function bubble(arr) {
 2     for (var i = 0, length = arr.length; i < length; i++) {
 3         for (var j = 0; j < length -1 -i; j++) {
 4             if (arr[j] > arr[j+1]) {
 5                 arr[j] = arr[j] + arr[j+1];
 6                 arr[j+1] = arr[j] - arr[j+1];
 7                 arr[j] = arr[j] - arr[j+1];
 8             }
 9         }
10     }
11     return arr;
12 }

第三种  借助数组 推荐 line 5

 1 function bubble(arr) {
 2     for (var i = 0, length = arr.length; i < length; i++) {
 3         for (var j = 0; j < length -1 -i; j++) {
 4             if (arr[j] > arr[j+1]) {
 5                 arr[j] = [arr[j+1], arr[j+1] = arr[j]][0];
 6             }
 7         }
 8     }
 9     return arr;
10 }

知识要一点点积累总结,向大牛膜拜的同时,也要走路哦。掌握好基础,多思考,多总结。

亲爱的你 中秋快乐!

时间: 2024-12-23 10:25:33

算法中交换两个数据的相关文章

经典算法学习——交换两个整型数据

交换两个数是在编程中经常会用到的,当然我们可以用很常见的方式来实现,也可以各种稀奇古怪的方法来做.这里我们用三种比较常规的方式来做,太过古怪的方法个人觉得没有太大必要.实例代码上传至:https://github.com/chenyufeng1991/SwapFunction (1)使用指针 实现如下: // // main.c // SwapFunc // // Created by chenyufeng on 16/2/3. // Copyright © 2016年 chenyufengwe

java实现原数组根据下标分隔成两个子数组并且在原数组中交换两个子数组的位置

此类实现:输出一行数组数据,根据输入的下标,以下标位置为结束,将原数组分割成两组子数组.并交换两个子数组的位置,保持子数组中的元素序号不变.如:原数组为7,9,8,5,3,2 以下标3为分割点,分割为子数组一:7,9,8,5.和子数组二:3,2.经过交换算法后的结果应为:3,2,7,9,8,5 有两种交换算法<1>前插法:将子数组3,2另存在一个临时数组中,将原数组7,9,8,5,3,2每一位向后移两个位置  再将子数组3,2插入到移动好元素位置的原数组中.<2>逆置法:将原数组7

在排序的数组中交换两个元素

如题,在一串已经排序好的数中,交换了两个元素.例如: nums[] = {1,2,3,4,5,6,7,8,9,10} 交换两个元素(例如交换数字5和9)后: nums[] = {1,2,3,4,9,6,7,8,5,10} 问题是怎么在数组中找到这两个元素? 思路 假设交换的两个元素为x和y,且x < y.其他的数为Ni.那么问题可以表示为: nums[] = {N1 , N2 , N3 , Ni , x , Ni+2 , ... , y , ...,Nm } 交换x和y后 nums[] = {N

PHP中交换两个变量的值

前言 本来今天想更新PHP操作socket的代码,但是由于项目上原因实在没什么心情,不过过段时间会操作短信网关,到时候自然会更新socket代码,今天主要是将如何利用php交换两个数. list 首先,采用php的list数据结构.上代码,然后再解析 [php] view plain copy print? function swap(&$a, &$b) { list ( $a, $b ) = array ($b, $a ); } list:把数组中的值赋值给list中的变量,相当于把$b

常用算法之交换两个数的值

交换两个变量的值,古老的话题,下面把各种方法做个总结. 为了方便,先定义两个变量. int a = 1; int b = 2; 一 借助临时变量 1 交换变量值 int tmp; tmp = a; // tmp = 1 a = b; // a = 2 b = tmp; // b = 1 2 交换地址 int *p; p = &a; // tmp->1 a = &b; // a->2 b = p; // b ->1 二 不借助第三个变量 1 加减法 a = a + b //

JavaScript中交换两个变量的值得三种做法(代码实现)

javascript在编程时经常会涉及到如何交换两个变量的值,例如常见的冒泡排序,快速排序等:下面我讲根据自己近期所学总结几种常见的交换两个变量值的方法: 方法一:借助第三方变量交换两个变量的值 var num1=20; var num2=50; var temp=num1; num1=num2; num2=temp; console.log(num1);//在控制台输出交换后的num1=50 console.log(num2);//在控制台输出交换后的num2=20 方法二:借助加法计算,交换

Golang中交换两个变量的值,但是不允许使用第三个变量?

package main import ( "fmt" ) func main() { //声明两个变量并且赋值 a=10 b=20 交换后的值是a=20 b=10 并且,不可以使用第三个变量 a := 10 b := 20 //1.首先a=a+b的值 10+20=30 a = a + b // 这个时候a的值发生改变但是b的值没有 b=a-b b = a - b // b = a -b ==>> b = a + b -b 等于a的值 b=10 a = a - b // a

excel中比较两列数据是否相同,并标上颜色

选中B列,点击条件格式中的新建规则,选择第二项-只为包含以下内容的单元格设置格式,单元格值 - 不等于 - =$A1,设置格式显示其他颜色的字体.

C语言中交换两个数值的方法

//方法1    int  one = 1;    int two = 2;    int temp = 0;    temp = one;    one = two;    two = temp;    printf("one = %d\n", one);    printf("two = %d\n", two);            //方法2    int a1 = 5;    int a2 = 8;    a1 = a2 - a1;    a2 = a2