本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
大家好,我是洋哥。今天给大家带来的是每日一题——排序问题。
题目要求
运用你所学的JavaScript知识,将下面的原始数据按照从小到大的顺序排列。
原始数据:13, 14, 94,33, 82, 25, 78, 94, 65, 23, 45, 27, 73, 25, 39, 10
建议用时:5-10分钟
难度:简单
知识点考察
这道题主要考察的就是排序算法。这个涉及到JavaScript程序流程控制、数组、函数等相关知识点,虽然简单但是这也算是一道综合题。
问题分析
第一,有两种方案,定义函数和不定义函数直接做。如果不定义函数,这一组原始数据只是一个个案,如果以后出现了不同的数据,还需在编程,不如直接定义一个函数来一劳永逸。
第二,构造函数。这道题我们采用的是这样一个方法。把原始数据存入一个数组中,然后两个数两两比较,将小的数字放在前面。方式多样可自行选择也可参照本题代码所示。
第三,输出数组。排好后输出数组即可。
相关知识点复习
函数的定义
函数的定义由以下4部分组成:
关键字function。
函数名。
参数。
函数体。
函数的调用
当函数定义完成后,要想在程序中发挥函数的作用,必须得调用这个函数。
函数的调用非常简单,只需引用函数名,并传入相应的参数即可。
函数声明与调用的编写顺序不分前后。
代码实现
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script>
function sort(list) {
var gap = list.length / 2;
while (1 <= gap) {
for (var i = gap; i < list.length; i++) {
var j = 0;
var temp = list[i];
for (j = i - gap; j >= 0 && temp < list[j]; j = j - gap) {
list[j + gap] = list[j];
}
list[j + gap] = temp;
}
gap=gap/2;
}
}
var arr = [ 13, 14, 94,33, 82, 25, 78, 94, 65, 23, 45, 27, 73, 25, 39, 10];
sort(arr);
document.write(arr);
</script>
</head>
<body>
<p>原始数据:13, 14, 94,33, 82, 25, 78, 94, 65, 23, 45, 27, 73, 25, 39, 10</p>
</body>
</html>
总结和建议
排序题是属于算法题的一种了,还有很多比这更加复杂和难的排序算法题,而且有很多排序的算法,大家可以课下自己查找资料了解学习一下。