从 arr[0] 开始,每一组相邻的两个元素间进行比较,两层循环,第一次循环完成后会把最大的数放在最后,第二次循环完成后会把第二大的数放在倒数第二的位置,直到排序完成。
- function bubbingSort(arr) {
- var len = arr.length;
- for (var i = 0; iarr[j + 1]) {
- var tmp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = tmp;
- }
- }
- }
- return arr;
- }
快速排序:实际中最常用的一种排序算法,速度快,效率高。速排序是找出一个元素(理论上可以随便找一个)作为基准 (pivot), 然后对数组进行分区操作, 使基准左边元素的值都不大于基准值, 基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他 n-1 个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及调整返回基准的最终位置以便分治递归。
(1)递归方法:
- var quickSort = function(arr) { //如果数组长度小于等于1无需判断直接返回即可 if(arr.length<=1){ return arr; } var midIndex=Math.floor(arr.length/2);//取基准点 var midIndexVal=arr.splice(midIndex,1);//取基准点的值,splice(index,1)函数可以返回数组中被删除的那个数arr[index+1] var left=[];//存放比基准点小的数组 var right=[];//存放比基准点大的数组 for(var i=0;iright) return;后面的代码不再执行了。这个一定要理解。 };
(2)非递归:
待完善
二分算法:二分查找,也为折半查找。首先要找到一个中间值,通过与中间值比较,大的放又,小的放在左边。再在两边中寻找中间值,持续以上操作,直到找到所在位置为止。
(1)递归
- function binarySearch(data, item, start, end) {
- var end = end || data.length - 1;
- var start = start || 0;
- var m = Math.floor((start + end) / 2);
- if (item == data[m]) {
- return m;
- } else if (item < data[m]) {
- return = ""
- var = ""arr = "[34,12,5,123,2,745,32,4];"pre = "" >
(2)非递归
- function binarySearch(data, item) {
- var h = data.length - 1,
- l = 0;
- while (l <= h) {
- var m = Math.floor((h + l) / 2);
- if (data[m] == item) {
- return m;
- }
- if (item > data[m]) {
- l = m + 1;
- } else {
- h = m - 1;
- }
- }
- return false;
- }
- var arr = [34, 12, 5, 123, 2, 745, 32, 4];
- binarySearch(arr, 5);
flex 布局(display:flex 是 CSS3 中新的盒子模型)ddisplay 的所有属性
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/02-28/17810453.html