四、冒泡+排序

package mypro01;

import java.util.Arrays;
import java.util.List;

public class Utils {
	public static <T extends Comparable<T>> void  sort(List<T> list) {
		Object[] arr=list.toArray();//转化成数组
		sort(arr);
		for (int i=0;i<arr.length;i++) {
			list.set(i, (T) arr[i]);
		}
	}

	public static <T extends Comparable<T>> void  sort(T[] arr)  {
		boolean blag=false;
		for (int j=0;j<arr.length-1;j++) {
			System.out.println("第"+(j+1)+"遍");
			for(int i=0;i<arr.length-1-j;i++) {
				System.out.println("第"+(i+1)+"趟");
				if(((Comparable)arr[i]).compareTo(arr[i+1])>0) {
					T temp=arr[i];
					arr[i]=arr[i+1];
					arr[i+1]=temp;
					blag=true;
				}			
			}
			if(!blag) {
				break;
			}			
		}
	}
	public static void  sort(Object[] arr)  {
		boolean blag=false;
		for (int j=0;j<arr.length-1;j++) {
			System.out.println("第"+(j+1)+"遍");
			for(int i=0;i<arr.length-1-j;i++) {
				System.out.println("第"+(i+1)+"趟");
				if(((Comparable)arr[i]).compareTo(arr[i+1])>0) {
					Object temp=arr[i];
					arr[i]=arr[i+1];
					arr[i+1]=temp;
					blag=true;
				}			
			}
			if(!blag) {
				break;
			}			
		}
	}
		
}

调用

package mypro01;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class collection_sort {
	public static void main(String[] args) {
		
		List<String> list=new ArrayList<String>();
		list.add("a");
		list.add("avb");
		list.add("dsdf");
		Utils.sort(list);
		System.out.println(list);
		
		String[]  arr={"a","acv","adc","ab"};
		Utils.sort(arr);
		System.out.println(Arrays.toString(arr));
	}
}

 

第1遍
第1趟
第2趟
[a, avb, dsdf]
第1遍
第1趟
第2趟
第3趟
第2遍
第1趟
第2趟
第3遍
第1趟
[a, ab, acv, adc]

结果

排序的实体类都实现了java.lang.Comparable接口,在这个接口中只有一个方法,compareTo(Object obj);在比较中可以用Comparator接口中的compare方法;最后,这两个方法都是在collections接口中,一个是<list>,一个是(list,comparator)


 






posted @ 2022-03-24 22:22  小熊尤里  阅读(22)  评论(0编辑  收藏  举报