菜鸟必会:冒泡排序与快速排序算法详解及position属性详解

需积分: 10 23 下载量 23 浏览量 更新于2024-07-19 收藏 44KB DOCX 举报
在Web前端面试中,对于初学者来说,掌握基本的排序算法和CSS定位属性是至关重要的。本文将为你详细解析这两个主题。 **1. 冒泡排序与快速排序算法** **冒泡排序** 是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。这个过程会持续到没有任何一对数字需要交换为止,即序列已经排序完成。以下是JavaScript实现的冒泡排序示例: ```javascript function bubbleSort(arr) { var times = 0; for (var i = 0; i < arr.length - 1; i++) { for (var j = i + 1; j < arr.length; j++) { if (arr[i] > arr[j]) { // 交换条件 var temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; console.log("第" + (++times) + "次排序后:" + arr); } } } return arr; } ``` **快速排序** 则是一种更高效的排序算法,它采用分治策略。首先选择一个基准值(通常是中间元素),然后将数组分为两部分,一部分的所有元素都比基准值小,另一部分所有元素都比基准值大。然后递归地对这两部分进行排序。下面是JavaScript版本的快速排序实现: ```javascript function quickSort(arr) { var times = 0; if (arr.length <= 1) { return arr; // 基准条件 } var midIndex = Math.floor(arr.length / 2); var midIndexVal = arr.splice(midIndex, 1)[0]; // 取基准值 var left = []; // 小于基准值的元素 var right = []; // 大于基准值的元素 for (var i = 0; i < arr.length; i++) { if (arr[i] < midIndexVal) { left.push(arr[i]); } else { right.push(arr[i]); } console.log("第" + (++times) + "次排序后:" + arr); } return quickSort(left).concat(midIndexVal, quickSort(right)); }; ``` **2. CSS position 属性** **position** 属性在CSS布局中扮演着关键角色,它定义了元素相对于其容器或文档流的位置。主要有以下几种值: - **static**(默认值):元素按照文档流自然排列,不改变其他元素的布局。 - **relative**:元素相对于其正常位置偏移,但不会影响其他元素的位置。可以通过 `top`, `right`, `bottom`, 和 `left` 属性设置偏移量。 - **absolute**:元素相对于最近的非 static 定位祖先元素进行定位,如果没有这样的祖先,则相对于视口(浏览器窗口)。它脱离了文档流,对其他元素的布局没有影响。 - **fixed**:元素相对于浏览器窗口定位,与滚动无关。常用于创建固定导航栏或侧边栏。 - **sticky**:类似于 absolute,但在满足一定条件下(如顶部或底部边界到达)会变为 relative,保持在视口范围内。 理解并熟练运用这些概念能够帮助你在实际项目中灵活布局页面元素,确保页面结构清晰、交互顺畅。在面试时,准备回答关于这些基础概念的问题以及如何在实践中应用它们,是提高面试成功率的关键。