arr

冒泡排序和选择排序

会有一股神秘感。 提交于 2019-12-06 04:30:57
冒泡排序和选择排序都是数组排序。 数组排序方法:sort()排序,字符的排序,逐位比较                 arr.sort(function(a,b){             return a-b;           });           console.log(arr); a-b从小到大数值排序,b-a从大到小排序。 冒泡排序:两两比较。 案例:arr[5,7,4,8,3]   确定比较次数   0-1 1-2 2-3 3-4   0~length-1-0   0-1 1-2 2-3      0~length-1-1   0-1 1-2        0~length-1-2   0-1           0~length-1-3   length-1 排序   for(var i=0;i<arr.length-1;i++){   for(var j=0;j<arr.length-1-i;j++){     if(arr[j] > arr[j+1]){       var ls = arr[j];       arr[j] = arr[j+1];       arr[j+1] = ls;     }     }      } 选择排序:将第一位和后面所有相比较,最小的交换,放在第一位。 案例:arr[5,7,4,8,3] 分析: 0-1 0-2 0-3

C语言入坑指南-数组之谜

老子叫甜甜 提交于 2019-12-06 03:35:34
前言 在C语言中,数组和指针似乎总是“暧昧不清”,有时候很容易把它们混淆。本文就来理一理数组和指针之间到底有哪些异同。 数组回顾 在分析之前,我们不妨回顾一下数组的知识。数组是可以存储一个固定大小的相同类型元素的顺序集合。为了便于我们说明,假设有以下数组声明: int a[5]; char b[] = "hello"; 数组大小必须在编译期就作为一个常数确定下来。 但C99中引入了变长数组,允许数组的维度是表达式 ,但在数组分配内存时,其表达式的值可以被求出。 数组下标运算实际上都是通过指针进行的,也就是说a[4]与*(a+4)是等价的,甚至你会发现和4[a]也是一样的。 数组名一般代表了指向该数组下标为0的元素的指针,并且printf("%s\n",hello)与printf("%s\n",&hello[0])等效。 数组和指针不相等 考虑下面的声明: int c[4];//假设int占4字节 int *d; 对于上面的声明,编译器会给c预留内存空间4*4字节,并且数组名代表着指向数组第一个元素的指针。但对于d,却只为指针本身保留了内存空间。 所以此时有下面的操作: c[3]; //合法 *(c+3); //合法 *d; //不合法,d指向了内存中不确定位置 c++; //不合法,一维数组名是指针常量,常量不能被修改掉 d++; //可通过编译 另外,下面的两种情况也是不一样的:

常用API和基础算法

微笑、不失礼 提交于 2019-12-06 03:27:52
和数学相关 java.lang.Math类 abs(x):求绝对值 sqrt(x):求平方根 pow(x,y):求x的y次方 ceil(x):向上取整 floor(x):向下取整 round(x):四舍五入 random():得到[0,1)范围的随机值 max(x,y):求x,y的最大值 min(x,y):求x,y的最小值 PI:圆周率 java.math包 BigInteger:不可变,任意精度的整数 BigDecimal:不可变,任意精度的小数 它们要new对象来表示数据,要通过add,subtract,multiply,divide等方法来进行算术运算 java.util.Random 1 Random r = new Random(); 2 3 double d = r.nextDouble();//[0,1) 4 int i = r.nextInt();//int范围内 5 int j = r.nextInt(x);//[0,x)范围内的整数 日期时间相关 java.util.Date new Date():获取系统日期时间 new Date(long 毫秒):根据毫秒值来获取日期时间 long getTime():获取该日期时间对应的毫秒值,距离1970-1-1 0:0:0 java.util.Calender (1)创建子类对象:GregorianCalender

闭包的常规缺陷以及唯一一种解决方案

烂漫一生 提交于 2019-12-06 02:57:48
function test () { var arr = []; for (var i = 0; i < 10; i ++) { arr[i] = function () { document.write(i + " "); } } return arr; } var myArr = test(); for (var j = 0; j < 10; j ++) { myArr[j](); } 首先看for循环,循环时arr[i]变化为arr[0]-arr[9],但因后面函数并无执行语句执行,所以循环10次结果为:arr[0] = function () {} ====> arr[9] = function () {},“document.write”语句未执行,属于‘看不见’的状态,只能看到arr数组的每位都是一个function,一共有10个,此时i的值已因循环变成了10。 然后把arr数组return保存到了外部,此后再执行函数,因i的值已为10,执行时终于才读取到document.write语句,所以打印10,执行10次就打印10个10 来源: https://www.cnblogs.com/oo5lll/p/11959355.html

shell脚本的基本语句

耗尽温柔 提交于 2019-12-06 02:35:42
shell 变量: name=”hauzai007” echo $name 注意事项: 变量名和等号之间不能有空格 不能使用标点符号 不能使用bash里的关键字 只读变量: name=”huazai007” 关键字:readonly name 删除变量: unset name 变量类型: 1 局部变量: 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量 2 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。 系统环境变量: 查看所有环境变量:env 删除环境变量:unset HAHA 举个例子: PPID:是当前进程的父进程的PID PWD:当前工作目录。 RANDO:随机数变量。每次引用这个变量会得到一个0~32767的随机数。 查看所有环境变量:env 删除环境变量:unset 用vim在/etc/profile文件中添加我们想要的环境变量 设置新的环境变量 export 新环境变量名=内容 例:export MYNAME=”LLZZ” 生效 source /etc/profile 字符串 str="abcdefg" echo ${#str} echo ${str:1:4} #表示从字符串的第二个字符开始截取,取第四个字符

几种常见排序方法的基本介绍,性能分析,和c语言实现

不羁的心 提交于 2019-12-06 00:50:17
本文介绍8种常见的排序算法,以及他们的原理,性能分析和c语言实现: 为了能够条理清楚, 本文所有的算法和解释全部按照升序排序进行 首先准备一个元素无序的数组arr[],数组的长度为length,一个交换函数swap, 在main函数中实现排序函数的调用,并输出排序结果: void swap(int*x , int*y) { int temp = *x; *x = *y; *y = temp; } int main() { int arr[] = { 1,8,5,7,4,6,2,3}; int length = sizeof(arr) / sizeof(int); sort(arr, length); for (int i = 0;i < length;i++) { printf("%d\n", arr[i]); } return 0; } 插入排序 第一次循环: 第二次循环: 第三次循环: 外层循环每执行一次就从无序区向有序区中插入一个数据arr[i]   里层循环控制插入的数据arr[i]与其前一个数据比较,如果比前一个数据小,就让前一个数据后移1位   ...不断重复上述步骤,直到找到不比arr[i]小的数据arr[j],因为arr[j]后面的数据都后移了1位,所以直接将arr[i]放在空闲的arr[j+1]位置 c程序实现: void CRsort(int arr[],

两道算法题

对着背影说爱祢 提交于 2019-12-06 00:36:49
1.将对象obj = {a : 1 , b : 2 , c : 3}, 生成数组arr=[[a,b,c],[a,2,3]]; 2.将a = [1 , 3 , 3 , 4 , 2 , 5 , 1]去重并排序; <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> </body> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script> $(function(){ obj(); arr(); arr.push(arr1,arr2); console.log(arr); sort(); }) function obj(){ var obj = {a:1,b:2,c:3}; arr1=[]; arr2=[]; for(var key in obj){ arr1.push(key); arr2.push(obj[key]); } arr2[0]="a"; } function arr(){ arr=[]; } function twice(){ a=[1,3,3,4,2,5,1]; var num=0; for(var i=0;i<a.length;i++){ num++;

JavaScript工具函数--数组相关

谁说胖子不能爱 提交于 2019-12-05 23:12:19
/** * 数组去重 * @param arr * @returns {*[]} */ function deDuplication ( arr ) { return [ ... new Set ( [ ... arr ] ) ] ; } /** * 数组平铺 * @param arr * @returns {Array} */ function flattenArray ( arr ) { return arr . reduce ( ( prev , curr ) => { if ( ! Array . isArray ( curr ) ) { // 当前元素不是数组 return [ ... prev , curr ] ; } else { // 当前元素是数组 return [ ... prev , ... flattenArray ( curr ) ] ; } } , [ ] ) ; } /** * 数组平铺2 * @param arr */ function flattenArray1 ( arr ) { const res = [ ] ; function flat ( arr ) { for ( let item of arr ) { if ( ! Array . isArray ( item ) ) { res . push ( item ) ; } else {

几种常见排序算法的实现原理性能分析和c语言实现

霸气de小男生 提交于 2019-12-05 19:19:47
~~~~~~~~~~~~~~~~~还未完成发布点错了~~~~~~~~~~~~~ 本文介绍8种常见的排序算法,以及他们的原理,性能分析和c语言实现: 为了方便比对,本文所有的排序全部是升序. 首先准备一个元素无序的数组,一个交换函数,在main函数中实现排序函数的调用,并输出排序结果: void swap(int*x , int*y) { int temp = *x; *x = *y; *y = temp; } int main() { int arr[] = { 1,8,5,7,4,6,2,3}; int length = sizeof(arr) / sizeof(int); sort(arr, length); for (int i = 0;i < length;i++) { printf("%d\n", arr[i]); } return 0; } 插入排序 第一次排序: 第二次排序: 第三次排序: 外层循环每执行一次就从无序区向有序区中插入一个数据arr[i]   里层循环控制插入的数据arr[i]与其前一个数据比较,如果比前一个数据小,就让前一个数据后移1位   ...不断重复上述步骤,直到找到不比arr[i]小的数据arr[j],因为arr[j]后面的数据都后移了1位,所以直接将arr[i]放在空闲的arr[j+1]位置 c程序实现: void CRsort(int

PTA 冒泡排序

╄→гoц情女王★ 提交于 2019-12-05 15:04:17
6-4 冒泡排序 (10 分) 编程实现冒泡排序函数。void bubbleSort(int arr[], int n);。其中arr存放待排序的数据,n为数组长度(1≤n≤1000)。 函数接口定义如下: /* 对长度为n的数组arr执行冒泡排序 */ void bubbleSort(int arr[], int n); 请实现bubbleSort函数,使排序后的数据从小到大排列。 裁判测试程序样例: #include <stdio.h> #define N 1000 int arr[N]; /* 对长度为n的数组arr执行冒泡排序 */ void bubbleSort(int arr[], int n); /* 打印长度为n的数组arr */ void printArray(int arr[], int n); void swap(int *xp, int *yp) { int temp = *xp; *xp = *yp; *yp = temp; } int main() { int n, i; scanf("%d", &n); for (i = 0; i < n; ++i) { scanf("%d", &arr[i]); } bubbleSort(arr, n); printArray(arr, n); return 0; } /* 打印长度为n的数组arr */ void