1、算法---栈
判断括号成对出现
sdfj(nrg(lj()k)nk)sldjwef 合法
q(wdwf()hknkql(whdq)w) 合法
hk)nqeif)liq(h(flq)wj( 不合法
思路:
括号存在嵌套关系,也存在并列关系
可以遍历字符串的每一个字符,使用栈来处理:
(1)遇到左括号,把左括号压入栈中
(2)遇到右括号,判断栈是否为空,为空说明没有左括号与之对应,则不合法。如果栈不为空,则移除栈顶的左括号---这对括号抵消了
当遍历结束后,如果栈是空的则合法,否则不合法
2、冒泡排序
// 冒泡排序 let arr = [1, 6, 3, 7, 5, 9, 2, 8]; function sort(arr) { // 升序 console.time("冒泡排序耗时") let num = null for (let i = 0; i < arr.length - 1; i++) { // 外层循环的作用是:每次循环找出一个最大数放在这个数组的最后面 for (let j = 0; j < arr.length - i - 1; j++) { // 内层循环的作用是:比较相邻两个数的大小从而进行交换位置 // 借助一个中间容器交换位置 if (arr[j] > arr[j + 1]) { num = arr[j] arr[j] = arr[j + 1] arr[j + 1] = num } } } console.log(arr) console.timeEnd("冒泡排序耗时") } sort(arr)