帮我写一下arrarylist快速排序方法

try13698903461 2009-09-04 03:37:31
你好,我已经写了以下代码,谁帮我写出红色所标的函数。使其安年龄排序?谢谢。使用快速排序和插入排序都可。谢谢

sort.java文件
public class ListSort
{
public static void main(String[] args)
{
ArrayList list = new ArrayList();
list.add(new Person(1,"李星","Lihongxing",28));
list.add(new Person(2,"钱老大","Qianwei",35));
list.add(new Person(3,"谭亮","Tannailiang",27));
list.add(new Person(4,"文学明","Wencheng",25));
list.add(new Person(5,"刘小鹏","Liuneng",29));
list.add(new Person(6,"周智","Zhouhui",26));
list.add(new Person(7,"毕小华","Biruixin",23));
list.add(new Person(8,"安明丽","Anshulin",24));
list.add(new Person(9,"陈明才","Chenrencai",25));
list.add(new Person(10,"符大勇","Fuzhiyong",34));

sortlist(list);
}
}
}


Person.java文件
public static class Person
{

private int id;
private String CName;
private String PName;
private int iAge;
//构造函数
public Person(int id,string Cname,string PName,int iAge){
this.id = id;
this.CName = Cname;
this.PName = PName;
this.iAge= iAge;
}
public int getiAge()
{
return iAge;
}

public String getCName()
{
return CName;
}

public String getPName()
{
return PName;
}
public String getid()
{
return id;
}
}



...全文
316 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
FFTTPP 2009-11-04
  • 打赏
  • 举报
回复
???
gesanri 2009-09-05
  • 打赏
  • 举报
回复
直接插入排序的


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

public class ListSort {
public static void main(String[] args) {
ArrayList<Personal> list = new ArrayList<Personal>();
list.add(new Personal(1,"李星","Lihongxing",28));
list.add(new Personal(2,"钱老大","Qianwei",35));
list.add(new Personal(3,"谭亮","Tannailiang",27));
list.add(new Personal(4,"文学明","Wencheng",25));
list.add(new Personal(5,"刘小鹏","Liuneng",29));
list.add(new Personal(6,"周智","Zhouhui",26));
list.add(new Personal(7,"毕小华","Biruixin",23));
list.add(new Personal(8,"安明丽","Anshulin",24));
list.add(new Personal(9,"陈明才","Chenrencai",25));
list.add(new Personal(10,"符大勇","Fuzhiyong",34));

sortlist(list);
}

public static void sortlist(ArrayList list){
List<Personal> arrange = new ArrayList<Personal>();
int age[] = new int[list.size()];
for(int i = 0; i < list.size(); i++)
age[i] = ((Personal)list.get(i)).getiAge();
sort(age);
for(int i = 0; i < age.length; i++){
for(int j = 0; j < list.size(); j++){
if(age[i] == ((Personal)list.get(j)).getiAge()){
arrange.add((Personal)list.get(j));
list.remove(j);
break;
}
}
}
for(int i = 0; i < arrange.size(); i++){
Personal p = (Personal)arrange.get(i);
System.out.println(p.getid() + " " + p.getCName() + " " + p.getPName() + " " + p.getiAge());
}

}

public static void sort(int[] values) {
int temp;
int j = 0;
for (int i = 1; i < values.length; i++) {
if(values[i]<values[i-1])//此处的判断很重要,这里体现了插入排序比冒泡排序和选择排序快的原因。
{
temp = values[i];
//数据往后移动
for (j=i-1; j>=0 && temp<values[j]; j--)
{
values[j+1] =values[j];
}
//将数据插入到j+1位置
values[j+1] =temp;
System.out.println("");
}
}
}

}


class Personal {
private int id;
private String CName;
private String PName;
private int iAge;
//构造函数
public Personal(int id,String Cname,String PName,int iAge){
this.id = id;
this.CName = Cname;
this.PName = PName;
this.iAge= iAge;
}
public int getiAge() {
return iAge;
}

public String getCName() {
return CName;
}

public String getPName() {
return PName;
}
public int getid() {
return id;
}
}

uastation 2009-09-04
  • 打赏
  • 举报
回复
建议用快速排序算法处理,这种算法是基于关键字比较的内部排序算法中速度最快的一个.这种算法也有另一个名字称为:分治法.
bigbug9002 2009-09-04
  • 打赏
  • 举报
回复
Collections.sort()用的是归并排序,是一种稳定的排序算法。快排是不稳定的排序算法。
比如你按年龄排一次序,再按姓别排一次序,那么相同的姓别的记录是按年龄排好序的。归并可以达到这个效果,快排不行。
bigbug9002 2009-09-04
  • 打赏
  • 举报
回复
建议用容器时用泛型。

ArrayList<Person> list = new ArrayList<Person>();
...
//sort(list)处用下面的代码取代之:
Collections.sort(list,new Comparator<Person>(){
public int compare(Person p1,Person p2){
return p1.getiAge()-p2.getiAge();
}
});
zp87530 2009-09-04
  • 打赏
  • 举报
回复
创建一个排序的类 实现Comparator 接口
public class Indicatorssort implements Comparator {


public int compare(Object arg1, Object arg2) {
IndicatorsForm idf1=(IndicatorsForm)arg1;//排序那个javabean或者object
IndicatorsForm idf2=(IndicatorsForm)arg2;
// System.out.println(">> "+idf1.isFlag());
//System.out.println(">> "+idf2.isFlag());
if(idf1.isFlag())//排序的字段
{

return idf2.getDownload()-idf1.getDownload();//按照下载次数排序
}else
{
return idf1.getDownload()-idf2.getDownload();

}

}


然后在对list排序
Indicatorssort insort=new Indicatorssort();
Collections.sort(“list的name”,insort);
zhoujingxian 2009-09-04
  • 打赏
  • 举报
回复
Tkendy写的很清楚,代码也很精炼
Tkendy 2009-09-04
  • 打赏
  • 举报
回复
Java Death NoteBook群赐予
Tkendy 2009-09-04
  • 打赏
  • 举报
回复
package test;
import java.util.ArrayList;
import java.util.List;


public class Sort {
public static void quickSort(int[] array) {
quickSort(array, 0, array.length - 1);
}

private static void quickSort(int[] array, int low, int high) {
if (low < high) {
int p = partition(array, low, high);
quickSort(array, low, p - 1);
quickSort(array, p + 1, high);
}

}

private static int partition(int[] array, int low, int high) {
int s = array[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (array[j] < s) {
i++;
swap(array, i, j);
}
}
swap(array, ++i, high);
return i;
}

private static void swap(int[] array, int i, int j) {
int temp;
temp = array[i];
array[i] = array[j];
array[j] = temp;
}



public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Person(1,"李星","Lihongxing",28));
list.add(new Person(2,"钱老大","Qianwei",35));
list.add(new Person(3,"谭亮","Tannailiang",27));
list.add(new Person(4,"文学明","Wencheng",25));
list.add(new Person(5,"刘小鹏","Liuneng",29));
list.add(new Person(6,"周智","Zhouhui",26));
list.add(new Person(7,"毕小华","Biruixin",23));
list.add(new Person(8,"安明丽","Anshulin",24));
list.add(new Person(9,"陈明才","Chenrencai",25));
list.add(new Person(10,"符大勇","Fuzhiyong",34));

sort(list);


}

public static void sort(List<Person> list){
int[] ages = new int[list.size()];
int i=0;
for(Person p:list){
ages[i] = p.getiAge();
i++;
}
quickSort(ages);

List<Person> ps = new ArrayList<Person>();
for(int j:ages){
for(Person p:list){
if(p.getiAge() == j && !ps.contains(p)){
ps.add(p);
}
}
}

for(Person p:ps){
System.out.println(p.getCName()+":"+p.getiAge());
}
}


}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧