- 简单排序
简单排序分从小到大排和从大到小排列;先从小到大排吧
原理是以位置为中心,位置上的数与后面的其他位置的数一一比较,直到确定这个位置该谁坐为止,不符合要求的换掉位置上的人。
取第一个位置,与第二个位置比一下,若第一个位置上的数比第二个位置上的数大,则两两交换;然后第一个位置的数又去找第三个位置的数比较,若第一个位置的数比第三个位置的数大,交换。。。比完最后一个位置上的数后,终于确定了第一个位置上的数是最小的。然后拿第二个位置与后面的位置一一比较。。。
//所以有两个循环嵌套,一个控制外面的位置,一个控制里面的每次比较的别人的位置.
package ch01;
//数组的简单排序
public class SimpleSort {
//传入一个数组
public static void sort(long[] arr) {
long temp = 0;//这里的temp就是该位置的最小值
//i用来固定已经确认的位置,当前面的位置都已经确定后,最后一个位置就不用比了
for(int i=0;i<arr.length-1;i++){
//j用来确定要与i比较的位置
for(int j=i+1;j<arr.length;j++){
//确定逻辑,从小到大的话,第一个位置要是小的数
//就是说当第一个位置上的数比后面的位置的数大的话,它就不是最小,需要交换
//要是从大到小排的话,只需要改下面的大于号为小于号就行了
if(arr[i]>arr[j]){
temp = arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
}
}
}
-
插入排序
-
冒泡排序
冒泡排序的算法是相邻两个数之间比较(递增为例),每次都是从第一个位置开始,让第一个位置的数和第二个位置的数进行比较,如果第一个数比第二个数大,两两交换,否则不交换;再进入到第二个位置,让第二个位置的数与第三个位置的数进行比较…经过第一轮操作后,可以确定最大的数已经往下沉了,所以第二轮操作仍从第一个位置开始,但最后那两个数的比较就可以不用进行了(已经确定了最后那个数最大)。
如果队列本身有序的话,只需要进行一轮扫描就完成了排序。
public void bubbySort(long arr[]) {
//
for(int i=0;i<arr.length-1;i++){
}
}