首页 > 代码库 > 三大排序
三大排序
1、插入排序
原理:每一次将待排序的对象,按其大小,插入到已排好序的的适当位置上,直到对象全部插入为止。
根据上面原理得知
i:代表的是比较的元素的下标移动轨迹:1~length;
j:代表的是被比较的元素的下标移动轨迹:i-1~0; j是往回走。
代码如下:
1 int [] arr = {3,1,7,5,9,4}; 2 System.out.println(Arrays.toString(arr)); 3 int i ,j ,t; 4 for(i = 1 ; i < arr.length; i++){ 5 t = arr[i]; 6 for(j = i-1 ; j >= 0 ; j--){ 7 if(t < arr[j]){ 8 arr[j+1] = arr[j]; 9 }else{10 break;11 }12 }13 arr[j+1] = t;14 }15 System.out.println(Arrays.toString(arr));
2、冒泡排序
原理:两两比较,大的往下沉,没比较完一轮,最大的数就留在了末尾。下一轮循环就不要参与了
根据以上原理得知
i:外层循环,代表的是循环的轮数:0~length-1
j:内层循环,代表的是每一轮比较的次数:0~length-1-i
代码如下:
1 for(int i = 0;i<arr.length-1;i++){2 for(int j = arr.length-1;j>i;j--){3 if(arr[j]<arr[j-1]){4 int temp = arr[j];5 arr[j] = arr[j-1];6 arr[j-1] = temp;7 }8 }9 }
3、选择排序
原理:把数组中所有的元素都和第一个元素进行比较,如果比第一个小,那么,就交换位置。注意:这里的第一个元素,是指未排好序的第一个元素,所有元素是指,除了排好序以及被比较元素之外的所有元素。
根据以上原理得知
i:为被比较元素的下标移动轨迹:0~lenth
j:为比较的元素的下标移动轨迹:i~length-1
代码如下:
1 //定义出比较以及被比较的运行轨迹 2 for(int i = 0;i<arr.length-1;i++){ 3 for(int j = i+1;j<arr.length;j++){ 4 //开始进行比较,即,比较的数比被比较的数小的时候,进行交换位置 5 if(arr[j]<arr[i]){ 6 int temp = arr[i]; 7 arr[i] = arr[j]; 8 arr[j] = temp; 9 }10 }11 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。