如何在java中用Arraylist中實現冒泡排序的問題


    眾所周知,冒泡排序法在一般數組中就3步,

1 if(a<b){
2                         temp=a;
3                         a=b;
4                         b=temp;
5 }

然而,在集合中就不是簡單的交換一下了,因為交換之后,必須保證新的值被重新設置到集合中去。那么變難了嗎?實際上更簡單了:

1 if(a<b){
2                         workerlist.get(j).setSc(b);
3                         workerlist.get(j+1).setSc(a);
4                     }

原理還是交換,不過不需要媒介temple 了。

具體代碼見下:

*********************工人類**********************

 1 package com.xtkj.worker;
 2 public class Worker{
 3     int id;
 4     String name;
 5     int age;
 6     double salary;
 7 
 8     public  Worker(){}   //構造方法
 9     public Worker(int id,String name, int age,double salary ) {
10         this.id = id;
11         this.name = name;
12         this.age = age;
13         this.salary = salary;
14     }
15     public String getName() {
16         return name;
17     }
18     public void setName(String name) {
19         this.name = name;
20     }
21     public int getId() {
22         return id;
23     }
24     public void setId(int id) {
25         this.id = id;
26     }
27     public double getSc() {
28         return salary;
29     }
30     public void setSc(double salary) {
31         this.salary = salary;
32     }
33     public int getAge() {
34         return age;
35     }
36     public void setAge(int age) {
37         this.age = age;
38 }
39     
40     public Worker getNext(){
41         return this.getNext();
42     }
43     
44 }

*******************方法類(這里只講解冒泡排序)***************

 1 package com.xtkj.worker;
 2 import java.util.ArrayList;
 3 import java.util.List;
 4 import java.util.Scanner;
 5 public class Method {
 6     public static List<Worker> workerlist = new ArrayList<Worker>();
 7     //按薪水由高到低排序
 8         double temp;
 9         double a=0;
10         double b=0;
11         void sort(){        
12             System.out.println("按員工薪水從高到低排序結果為:");
13             for(int i=0;i<workerlist.size()-1;i++){
14                 for(int j=0;j<workerlist.size()-1-i;j++){
15                     a=workerlist.get(j).getSc();
16                     b=workerlist.get(j+1).getSc();
17                     if(a<b){
18 //                        temp=a;
19  workerlist.get(j).setSc(b); //注意:這里是把值設置到集合中去 20 //                        a=b;              
21                      workerlist.get(j+1).setSc(a); //簡單的 a與b 交換,改變的只是從集合中取出來的結果,集合里面的元素並沒有改變 22 //                        b=temp;
23                     }
24                 }
25             }
26         }

*****************界面類(測試類)**********************

 
         

package com.xtkj.worker;

 

import java.util.Scanner;

public class Main {

/**

* @param args

*/

public static void main(String[] args) {

Method method = new Method();

boolean b = true;

while(b){

System.out.println();

System.out.println("*********************歡迎進入職員薪水管理系統***********************");

System.out.println("請選擇以下操作:");

System.out.println("1.添加新員工");

System.out.println("2.查詢員工信息");

System.out.println("3.顯示所有員工信息");

System.out.println("4.修改員工薪水");

System.out.println("5.刪除員工信息");

System.out.println("6.薪水由高到低排列");

System.out.println("7.統計員工平均工資和最低、最高工資");

System.out.println("8.退出本系統");

Scanner reader=new Scanner(System.in );

System.out.println("請輸入功能:");

int ab = reader.nextInt();

switch(ab)

{

case 1:

method.add();

break;

case 2:

method.find();

break;

case 3:

method.showAll();

break;

case 4:

method.updatesal();

break;

case 5:

method.delete();

case 6:

method.sort();

break;

case 7:

method.statics();

break;

case 8:

System.out.println("已退出職員薪水管理系統!");

b = false;

}

}

Worker wr=new Worker();

 

}

 

}

運行結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM