冒泡排序法
for(int i = 0;i < array.length;i++){ //控制趟数;
for(int j = 0; j < array.length-1-i;j++){
if(array[j] > array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
i 控制趟数,比较的趟数就是数组的长度。
每次交换两个数,每一趟下来之后最后的数字就是最大的数,下次不用比较。
依次类推,直到i = 数组长度。
此时,所有的数字都已经排好序了。
选择排序法
for(int i = 0;i < array.length;i++){//比较的趟数
minIndex = i;
for(int j = i+1;j < array.length;j++){
if(array[minIndex] > array[j]){
temp = array[minIndex];
array[minIndex] = array[j];
array[j] = temp;
}
}
}
第1趟,在待排序记录array[0]~array[array.lenght-1]中选出最小的记录,将它与array[0]交换;第2趟,在待排序记录array[1]~array[array.lenght-1]中选出最小的记录,将它与array[1]交换;以此类推,第i趟在待排序记录array[i]~array[array.lenght-1]中选出最小的记录,将它与array[i]交换,使有序序列不断增长直到全部排序完毕。
依此类推,直到 i 等于最后一个数,循环结束。
直接插入法排序
for(int i = 1;i < array.length;i++){
temp = array[i];
for(j =i-1;j >= 0;j--){
if(array[j] > temp){
array[j+1] = array[j];
} else {
break;
}
}
array[j+1] = temp;
}
}
每一趟将一个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止。
直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。