----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
复习完正则表达式,终于要开始走黑马报名的流程了,好激动!学过一遍反过来思索,有些知识点已经忘记了,这几天把毕老师的重点视频看了一遍,希望入学能顺利!
2013年1月17日,终于把基础测试提交上去了,看过毕老师的视屏后,基础测试做起来不算吃力,加油!第六道测试题,让我花了最多的时间,还好最终发现问题所在:交换数组的两个位置,传递参数时要传数组,可能当时做晕了,好半天都没有发现,在这里记一下。
第六题:写一个集合,集合存放的是整型的数据。写一个帮助类,帮组类中有两个static方法,一个方法为从大到小的顺序排序,一个方法为从小到大的顺序排序。实现上述的代码。
下面是我的代码,望老师,大家指正:
public classTest9 {
public static void main(String[] args) {
//定义一个集合ArrayList,并添加整型数据
List<Integer>al = newArrayList<Integer>();
al.add(5);
al.add(1);
al.add(8);
al.add(5);
al.add(7);
System.out.println("排序前:" + al);
//升序排序
al= SortUtils.upSort(al);
System.out.println("升序排序后" + al);
//降序排序
al= SortUtils.downSort(al);
System.out.println("降序排序后" + al);
}
}
//定义一个工具类,有两个static方法,一个方法为从大到小的顺序排序,一个方法为从小到大的顺序排序
class SortUtils {
//从小到大进行排序
public static List<Integer>upSort(List<Integer> l) {
Integer[]arr = getArr(l);
//用冒泡法对数组进行升序排序
for (int i = 0; i < arr.length-1; i++) {
for (int j = 0; j < arr.length-i-1; j++) {
if(arr[j]>arr[j+1]){
swap(arr,j,j+1);
}
}
}
return getNewList(arr);
}
//从大到小进行排序
public static List<Integer>downSort(List<Integer> l) {
Integer[]arr = getArr(l);
//用选择排序法对数组进行降序排序
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i]<arr[j]){
swap(arr,i, j);
}
}
}
return getNewList(arr);
}
//返回排序后的新集合
private static List<Integer>getNewList(Integer[] arr) {
List<Integer>newl = newArrayList<Integer>();
for (int i = 0; i < arr.length; i++) {
newl.add(arr[i]);
}
return newl;
}
//将List<Integer>集合转换成Integer数组
private static Integer[]getArr(List<Integer> l) {
Integer[]arr = newInteger[l.size()];
Iterator<Integer>it = l.listIterator();
int count = 0;
while(it.hasNext()){
arr[count]= it.next();
count++;
}
return arr;
}
//交换数组arr两个位置上的数,一开始没有传arr,交换没成功,切记!
private static void swap(Integer[] arr, int i, int j) {
int temp = arr[i];
arr[i]= arr[j];
arr[j]= temp;
}
}