list集合中存储Integer类型的数据,如何排序?

list集合中存储Integer类型的数据,如何排序?

问题描述:

ArrayList list = new ArrayList( );
然后添加几个元素,进行排序。要求不能用collections工具类。我之前用了数组里面的冒泡排序,可是无论怎么排,都没有效果,求大神指教。

//以这个为准
for(int i=0;i<list.size();i++){
        int min=i;//记录list剩余列表中的最小值的下标
        for(int j=i; j<list.size(); j++){
                if(list.get(min)>list.get(j)){
                        min=j;
                }
        }
        int minValue=list.get(min);//记录最小值
                //当前元素和最小值交换位置
        list.set(min,list.get(i));
        list.set(i,minValue);
}

//对list遍历
for(int i=0;i<list.size();i++){
    int min=i;//记录list剩余列表中的最小值的下标
    for(int j=0; j<list.size(); j++){
        if(list.get(min)>list.get(j)){
            min=j;
        }
    }
    int minValue=list.get(min);//记录最小值
        //当前元素和最小值交换位置
    list.set(min,list.get(i));
    list.set(i,minValue);
}

Set set = new HashSet();
for(int temp : list)
set.add(temp)

 List<Integer> array = new ArrayList<>();
 array.add(5);
 array.add(2);
 array.add(7);
 array.add(1);
 array.add(6);
 Set<Integer> sss = new HashSet<>();
 array.forEach(value->{sss.add(value);});
 System.out.println(sss);

HashSet会默认给你排序

//上面手误,j=i,按下面这种来
for(int i=0;i int min=i;//记录list剩余列表中的最小值的下标
for(int j=i; j if(list.get(min)>list.get(j)){
min=j;
}
}
int minValue=list.get(min);//记录最小值
//当前元素和最小值交换位置
list.set(min,list.get(i));
list.set(i,minValue);
}

public class MaoPaoTest {

/**
 * 两个值互换互换
 * @param A
 * @param i
 * @param j
 */
public static void exchange(int A[],  int i,int j){
    int temp = A[i];
    A[i] = A[j];
    A[j] = temp;

}

public static void main(String[] args) {
    int A[] = {2,5,1543,4,546,7678,6,876878,887};
    int n=A.length;
    for (int i = 0; i <n-1 ; i++) {
        for (int j = 0; j < n-1-i; j++) {
            if (A[j] > A[j + 1])            // 如果条件改成A[i] >= A[i + 1],则变为不稳定的排序算法
            {
                exchange(A, j, j + 1);        
            }
        }
    }
    for (int i = 0; i < n; i++) {
        System.out.println(A[i]);
    }
}

}