根据给定的算法步骤，生成一个排序函数。


以下是一个排序算法的步骤：
1. 比较相邻的元素。如果第一个比第二个大，就交换它们两个。
2. 对每一对相邻元素作同样的工作，从开始的第一对到最后一对，这样最后的元素会是最大的数。
3. 针对所有的元素重复以上的步骤，除了最后一个。
4. 持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
以下是基于上述算法步骤生成的排序函数实现：

```
function bubbleSort(arr) {
  var len = arr.length;
  for (var i = 0; i < len-1; i++) {
    for (var j = 0; j < len-1-i; j++) {
      if (arr[j] > arr[j+1]) {
        var temp = arr[j+1];
        arr[j+1] = arr[j];
        arr[j] = temp;
      }
    }
  }
  return arr;
}
```

这个函数使用冒泡排序算法对数组进行排序。其中，外层循环用来控制排序的轮数，内层循环用来比较相邻的元素并进行交换。在一轮排序结束后，数组中最大的元素会“浮”到数组的末尾，因此下一轮排序时可以排除已经排好序的元素，从而减少比较和交换的次数，提高排序效率。最终，当所有的元素都排好序时，算法结束。