4000 排序算法之桶排序,冒泡排序,快速排序
2017-08-14 20:32
357 查看
桶排序
问题:将一个包含5个整数(都是0-10的随机数)的数组从小到大排列思路:
- 创建一个一维数组(长度为11,每一项都为0)arr
- 若第第一个数是5,则arr[5]的值加1,将为五个数都遍历
- 将不为0的项打印出来
js实现代码:
arr = Array(11).fill(0); let p_arr = randomNumber(5) let n_arr = []; //生成随机数组 function randomNumber(count) { var randomArroy = []; for(var i of Array(count)) { randomArroy.push(parseInt(Math.random() * 11) + 1); } console.log(randomArroy); return randomArroy } function sort_t() { for(var i = 0; i < p_arr.length; i++) { arr[p_arr[i]]++; } for(var j=0;j<11;j++){ for(var k=0;k<arr[j];k++){ n_arr.push(j); } } console.log(n_arr); } sort_t();
冒泡排序
问题:将一个包含5个整数(都是0-10的随机数)的数组从小到大排列思路:
- 比较两个相邻的元素
- 按特定顺序交换元素
- 遍历所有元素后,剔除得到的最大的或最小的元素继续遍历
js实现代码:
function randomNumber(count) { var randomArroy = [] for(var i of Array(count)) { randomArroy.push(parseInt(Math.random() * 100) + 1) } console.log(randomArroy) return randomArroy } function bubbling(arr) { for(let i = 0; i < arr.length - 1; i++) { let m; for(let j = 0; j < arr.length - i - 1; j++) { // if(arr[j]>arr[j+1]){ // m=arr[j]; // arr[j]=arr[j+1]; // arr[j+1]=m; // } //坑点:冒号与逗号的优先级不确定导致的错误 // arr[j] < arr[j + 1] ? {} : m = arr[j], arr[j] = arr[j + 1], arr[j + 1] = m; // arr[j] < arr[j + 1] ? {} : (m = arr[j], arr[j] = arr[j + 1], arr[j + 1] = m); arr[j] < arr[j + 1] ? {} : function(){m = arr[j], arr[j] = arr[j + 1], arr[j + 1] = m}(); } } console.log(arr); } bubbling(randomNumber(10)); function bubbleSort(arr) { // var a=((new Date).getTime()); for(var i = 0; i < arr.length - 1; i++) { var tmp; for(var j = 0; j < arr.length - i - 1; j++) { if(arr[j] > arr[j + 1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } // console.log((new Date).getTime()-a) ; return arr; } // console.log(bubbleSort(randomNumber(10)));
快速排序
问题:将一个包含10个整数(都是0-100的随机数)的数组从小到大排列思路:
- 取中间数为基准数
- 比基准数小的放在左边数组,比基准数大的放在右边数组
- 将得到的数组重复以上操作直到排序完成
//随机数函数 function randomNumber(count) { var randomArroy = [] for(var i of Array(count)) { randomArroy.push(parseInt(Math.random() * 100) + 1) } console.log(randomArroy) return randomArroy } var a = randomNumber(10); function quickSort(a) { if(a.length <= 1) { return a; } let left = [],right = [],temp = []; key = Math.floor(a.length / 2); temp = a.splice(key, 1); for(var i = 0; i < a.length; i++) { temp>a[i]?left.push(a[i]):right.push(a[i]); } return quickSort(left).concat(temp, quickSort(right)); } console.log(quickSort(a));
END
相关文章推荐
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- 常用的排序算法:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序
- 元素排序几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 常用排序工具类:标准【正序、倒序】排序算法‘冒泡排序,选择排序,快速排序’
- 排序算法‘冒泡排序,选择排序,快速排序’
- 常用算法--基本排序算法(冒泡排序,选择排序,插入排序,快速排序,归并排序,桶排序)
- 排序算法解析--冒泡排序,选择排序,快速排序
- Java中的几种排序算法:冒泡排序,插入排序,二分法排序,简单排序,快速排序
- 排序算法——桶排序、冒泡排序、快速排序、选择排序
- 排序算法,快速排序,希尔排序,冒泡排序
- 排序算法之PHP版快速排序、冒泡排序
- 排序算法(三)、交换排序 —— 冒泡排序 和 快速排序
- 排序算法(快速排序、直接插入排序、直接选择、冒泡排序)
- c#的 排序算法--冒泡排序,快速排序
- 6种排序算法及其比较 简单选择排序,堆排序,简单插入排序,希尔排序,冒泡排序,快速排序,归并排序
- 各种排序算法总结----基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 基本排序算法(冒泡排序 选择排序 插入排序 快速排序 归并排序 基数排序 希尔排序)
- 排序算法--冒泡排序,归并排序,快速排序
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 3种排序算法的可视化 冒泡排序 选择排序 快速排序 转自自己另一个帐号