冒泡排序
思路:每轮排序都是将最大的数沉在最后一位。
每轮参与循环的数字个数均减一,因为后续数字已排序。
var i=0,j=0;
for(i=0;i<a.length;i++) 外循环,控制循环趟数。
{
for(j=0;j<a.length-i;j++) 内循环,控制每轮循环个数
{
var temp=0;
if a[j]>a[j+1]
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
二分法查找
思路:先排序,后查找
var low=0,high=a.length-1;
while(low<=high)
{
var mid=parseInt((high+low)/2);
if key==a[mid] key为要查找的数
{
return mid;
}
else if(key>a[mid])
{
low=mid+1;
}
else if(key<a[mid])
{
high=mid-1;
}
}
return -1; 未找到时返回-1
查找法排序
思路:1.找出无序列表中最小数的下标
2.让最小数和无序列表中第一个数交换(交换一次,无序列表更新一次,更新一次无序列表数少一个,因为前面数已排序)
for(i=0;i<a.length;i++) 外循环,控制循环次数
{
var k=i; 用k来记录最小的下标
for(j=i+1;j<a.length;j++) 内循环,无序列表数的循环
{
if a[k]>a[j] 如果定义的k所对应的元素大于a[j]
k=j; K和j交换位置
}
}
if(i!=k) 判断i是否等于k,如果等于就证明i本来即为最小数的
下标,无需进行交换,不等于时应进行交换
{
var temp;
temp=a[i];
a[i]=a[k];
a[k]=temp;
}