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

flash滚动照片制作网站做外贸推广

flash滚动照片制作网站,做外贸推广,百度收录个人网站是什么怎么做,无锡网站制作优化推广公司异或运算及异或运算实现的swap方法 ^(异或): ^运算是计算机中的位运算,运算规则为相同为0,不同为1(也被称为无进位相加)。位运算处理效率比常规运算符效率更高。 异或运算遵循的法则: 0^N N N^N 0 异或运算…

异或运算及异或运算实现的swap方法

^(异或): ^运算是计算机中的位运算,运算规则为相同为0,不同为1(也被称为无进位相加)。位运算处理效率比常规运算符效率更高。

异或运算遵循的法则:

  1.    0^N = N        N^N =0
  2.    异或运算遵循 结合律与交换律     

也就是说:a^a^b=b

swap方法的两种实现

常规交换(推荐)

public void swap(int[] arr,int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp; 
}

^交换(前提要求是,arr[i]与arr[j]内存地址不同)

public void swap(int[] arr,int i,int j){arr[i] = arr[i] ^ arr[j];arr[j] = arr[i] ^ arr[j];arr[i] = arr[i] ^ arr[j];
} 

异或常见题

1.在一个数组中有一种数是奇数次,其他数都是偶数次如何找出奇数次这种数[1,2,2,1,1,1,3,3,3],奇数次数为3

思路:1.因为异或操作满足交换律所以数组可以写为 [1,1,1,1,2,2,3,3,3]

           2.异或的特性  1^1 = 0 ;1^0=1    所以偶数项就消掉了,只剩下一个奇数项了  

public void problem1(int[] arr){int eor = 0; // 0^i = i;for(int i:arr){eor ^= i;}System.out.println("奇数项的数为:"+eor);
}

2.在一个数组中有两种数是奇数次,其他数都是偶数次如何找出奇数次这种[1,2,2,1,4,4,1,4,1,3,3,3] 奇数次数为3,4

思路:1.数组所有数异或出来的结果肯定是 a^b 其中 a   b必定是奇数项

           2.因为a与b又不相等,所以a^b的结果在2进制上某一位也比不相等(值称为rightOne,rightOne 二进制表达为 0000 0100这种有规律的结构)

           3.将数组划分为两个空间,^rightOne的值被分为a所在区间或者b所在区间(根据结果等于1或者0判断),但是在这个区间里面只有a或者b 不存在a,b同时存在的情况。

           4.找到a   又知道a^b   所以 a^a^b = b  a、b两个结果都被求解出来了     

public void problem2(int[] arr){int eor = 0;for(int i:arr){eor ^=i;}int rightOne = eor & (~eor + 1);//a^b  源码与补码进行 &操作 结果为 最右边二进制不相等的位次    int resultA = 0;for(int i:arr){if(i^rightOne = 1){//区间划分resultA ^=i;  }}int resultB = eor^resultA;System.out.println("{"+resultA +","+resultB +"}"); }

选择排序

public int[] selectSort(int[] arr){for(int i = 0;i < arr.length-1;i++){ //该for循环保证在第i个位置上是[i,N]位置上的最小数int minIndex = i;for(int j = i+1;j < arr.length-1;j++){//保证当前位置为整个数组最小值minIndex = arr[i] > arr[j] ? j : minIndex;}swap(arr,i,minIndex);}
}
//交换方法
public void swap(int[] arr,int i,int j){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;
}

冒泡排序

public int[] bubbleSort(int[] arr){for(int i = arr.length-1;i > 0;i++){//确定数组最右边的元素最大for(int j = 0;j < i;j++){//对比数组中所有元素,一步步的将最大的元素移植最右边if(arr[j] > arr[j+1]){//对比相邻数的大小,进行交换swap(arr,j,j+1);}}}return arr;
}

插入排序

public int[] insertSort(int[] arr){for(int i = 1;i < arr.length;i++){//0-i位置上有序//向左判断数组大小,如果当前位置小于前一个位置进行交换for((int j = i-1;j >= 0 && arr[j] > arr[j+1];j--){swap(arr,j,j+1);}}}

对数器

        什么是对数器,对数器指的是在没有OJ平台(在线程序测评系统)时自测的一种方式。实现原理就是生成随机数据。例如:数组长度随机,数据随机的数组。将两套算法结果进行对比,如果全部相同说明算法正确。(其中一种算法是否正确未知,另一种算法为暴力解法这种容易想并且不会错的座位对比项)

package com.example.math;import java.util.Arrays;/*** @author geekYang* @version 1.0* @since 1.0*/
public class 对数器 {public static void main(String[] args) {int maxSize = 100;int maxValue = 100;int testTotal = 50000;//测试次数boolean succed = true;for (int i = 0; i < testTotal; i++) {int[] arr1 = generateRandomArr(maxSize, maxValue);int[] arr2 = Arrays.copyOf(arr1, arr1.length);comparator(arr1);insertSort(arr2);if (!Arrays.equals(arr1, arr2)) {succed = false;break;}}System.out.println(succed ? "Nice" : "Fucking fucked!");}//生成随机数组方法public static int[] generateRandomArr(int maxSize, int maxValue) {//(int) ((maxSize + 1) * Math.random()) 生成随机[0,maxSize]范围的数int[] arr = new int[(int) ((maxSize + 1) * Math.random())];for (int i : arr) {arr[i] = (int) ((maxSize + 1) * Math.random()) - (int) ((maxSize + 1) * Math.random());}return arr;}//对比方法public static int[] comparator(int[] arr) {for (int i = 0; i < arr.length - 1; i++) {int minIndex = i;for (int j = i + 1; j < arr.length - 1; j++) {minIndex = arr[i] > arr[j] ? j : minIndex;swap(arr, j, minIndex);}}return arr;}//测试方法public static int[] insertSort(int[] arr) {for (int i = 1; i < arr.length - 1; i++) {for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {swap(arr, j, j + 1);}}return arr;}private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
}

本文章根据左程云老师课程进行总结反思

http://www.sczhlp.com/news/35250/

相关文章:

  • Spring 调试新姿势:一眼看清运行时,用 Spring Debugger 少踩 90% 坑
  • 怎么建设一个电影资源网站解析常见的网络营销方法
  • 上那个网站找手工活做网站建设策划书案例
  • 金峰辉网站建设网站怎么做
  • 用网站做淘宝客网上互联网推广
  • 西安危机公关公司郑州seo公司哪家好
  • 聊城做网站推广找谁百度我的订单app
  • wordpress 无数据库版广州网站排名专业乐云seo
  • 怎样做运营一个网站微信营销软件群发
  • 中小企业网站制作公司北京优化seo
  • 如何查看vs中建设好的网站游戏app拉新平台
  • 杭州做网站公司排名推广软件赚钱的app
  • 网站管理员密码忘记了最新旅游热点
  • 网站类别选择软件开发平台
  • 博物馆 网站 建设百度推广后台登陆入口
  • 网站有什么类型个人接广告的平台
  • fla可以做网站么网络游戏推广员
  • 网站开发薪资网站设计模板网站
  • 艺帆网络工作室网站源码搜索引擎营销的内容
  • 营销型网站主页定制新网站怎么推广
  • 网易网页游戏安徽百度关键词优化
  • 建筑网建筑规范大全网站标题seo外包优化
  • 编程和做网站有关系吗广州百度seo代理
  • 企业门户网站解决方案杭州网站优化推荐
  • 数据库范式详解(高中生版)
  • 如何做问卷调查网站360优化大师历史版本
  • 网站建设方案-奢侈品上海网站制作
  • 亦庄网站开发精准客户数据采集软件
  • fusionaccess免费服务器福州短视频seo公司
  • seo网站推广简历站长素材