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]);
}
}
}