手写 list 的 sort 函数
时间: 2023-09-22 13:12:25 浏览: 49
手写 list 的 sort 函数可以使用冒泡排序、插入排序、选择排序、快速排序等多种算法实现。以下是一种快速排序的实现方式:
```
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
```
使用这个函数进行排序时,只需要将待排序的列表作为参数传入即可,例如:
```
my_list = [3, 6, 1, 8, 2, 5]
sorted_list = quick_sort(my_list)
print(sorted_list)
```
输出结果为:
```
[1, 2, 3, 5, 6, 8]
```
相关问题
手写javaScript防抖函数
当用户在短时间内频繁触发某个事件时,防抖函数可以将多次触发的事件合并成一次,并在一定时间后执行一次。以下是一个手写的 JavaScript 防抖函数的示例代码:
```javascript
function debounce(func, delay) {
let timer = null;
return function() {
const context = this;
const args = arguments;
clearTimeout(timer);
timer = setTimeout(function() {
func.apply(context, args);
}, delay);
};
}
```
其中,`func` 是需要执行的函数,`delay` 是防抖的时间间隔。在防抖函数内部,使用 `setTimeout` 来延迟执行 `func` 函数,并在每次触发事件时清除上一次的延时器。最后,返回一个新的函数,用于替代原来的事件处理函数。
手写防抖函数
防抖函数的作用是在函数频繁触发时,只执行最后一次触发的函数。这在一些需要减少频繁操作的场景下很有用,比如输入框连续输入时触发搜索操作。
以下是手写的防抖函数代码:
```javascript
function debounce(func, delay) {
let timerId = null;
return function (...args) {
clearTimeout(timerId);
timerId = setTimeout(() => {
func.apply(this, args);
}, delay);
}
}
```
该函数接收两个参数:需要执行的函数 `func` 和延时时间 `delay`,返回一个新的函数。
在新的函数中,使用 `clearTimeout` 函数清除之前设置的定时器,然后重新设置一个新的定时器,延时时间为 `delay`。当定时器触发时,调用 `func` 函数,并传入之前保存的参数 `args`。
使用该函数可以实现防抖效果:
```javascript
const searchInput = document.querySelector('#search-input');
function search() {
console.log('search...');
}
searchInput.addEventListener('input', debounce(search, 500));
```
在输入框连续输入时,只有当输入停止了 500 毫秒后才会触发搜索操作。