冒泡排序
逻辑以及代码如下:
写的比较详细,如果还有的地方不理解,欢迎相互讨论
1 package cn.lk; 2 3 public class Demo01 { 4 public static void main(String[] args) { 5 6 int a[]={1,58,62,45,874,12,496,152,123,-5,-45,-9}; 7 8 9 10 11 //--------冒泡排序 12 //-第一层for循环表示当前排序的轮次 13 for(int i=0;i<a.length;i++){ 14 //-第二层for循环表示每轮排序中要将哪两个元素比较大小 15 for(int j=a.length-1;j>=i+1;j--){ 16 //-取出两个元素后对这两个元素进行大小判断 17 if(a[j]<=a[j-1]){//-设置升序或降序 18 //如果符合条件 19 int tmp=0; //-定义一个临时的中转变量tmp,用来置换取出来的两个元素 20 tmp = a[j-1]; //-将大数的值给tmp 21 a[j-1]=a[j]; //-将小数的值给大数,因为之前的大数已经给tmp了,所以不用担心被覆盖 22 a[j]=tmp; //-最后在将tmp里存的大数给了小数,因为之前的小数现在放在了大数里,也不用担心覆盖 23 /*至此,之前的大数的值给了小数,而小数的值给了大数,实现了按照降序的置换。就比如数组{1,3,5}, 24 * 按照降序就是第一次循环将3和5互换位置:{1,5,3} 25 * 第二次循环将1和5互换位置:{5,1,3} 26 * 第三次循环将1和3互换位置:{5,3,1} 27 * 因此实现降序,升序也是同理 28 * 29 */ 30 31 } 32 } 33 } 34 for (int i : a) { 35 System.out.println(i); 36 } 37 38 39 40 41 42 } 43 }
原理:
代码实现:
1 int nums [] = {1,34,56,8,-32,7,-9,0,235};
2 for(int i=0;i<nums.length;i++){//当前要确定的是哪个位置的数
3 for(int j =nums.length-1;j>=i+1;j--){
4 if(nums[j-1]>nums[j]){
5 int tmp = nums[j-1];
6 nums[j-1] = nums[j];
7 nums[j] = tmp;
8 }
9 }
10 }
11 for(int x : nums){
12 System.out.println(x);
13 }