1 var examplearr=[8,84,25,88,24,75,21,9]; 2 function sortarr(arr){ 3 for(i=0;i<arr.length-1;i++){ 4 for(j=0;j<arr.length-1-i;j++){ 5 if(arr[j]>arr[j+1]){ 6 var temp=arr[j]; 7 arr[j]=arr[j+1]; 8 arr[j+1]=temp; 9 } 10 } 11 } 12 return arr; 13 } 14 sortarr(examplearr); 15 console.log(examplearr);
依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。
依照这个规则进行多次并且递减的迭代,直到顺序正确.
详解:
该数组中只有8个数字(arr.length),所以至少需要进行7遍(arr.length-1)排序。
第一遍排序需要进行7次比较(arr.length-1-i 注:此时i=0)。
第一遍比较完成后数组最末尾的值就为最大值了,所以第二遍就不再需要跟最末尾的数字比较了。
因此第二遍只需要进行6次比较(arr.length-1-i 注:此时i=1)。
第二遍比较完成后,数组中倒数第二个数就是数组中所有数中的第二大的数字了,所以第三遍就不需要跟倒数第二个数比较了。
所以第三遍只需要进行5次比较(arr.length-1-i 注:此时i=2)。
以此类推,就可以得到由小到大的数组。