java 排序程序(sort) 选择排序 求程序
关注:224 答案:3 手机版
解决时间 2021-01-12 12:34
提问者时光盗走我的心
2021-01-11 18:56
java 画图画10个长方形,长度为随机数字 用选择排序(selection)排 最好在星期五之前
或帮忙看看我的选择排序程序部分有什么错也行,能帮我把插入排序(insertion)也写出来的加分!!!
谢谢各路大虾!!!
import java.util.Random;
import java.util.ArrayList;
import acm.program.*;
import acm.graphics.*;
import java.awt.*;
public class Sortline extends GraphicsProgram
{
private static final int MAX=100;
static ArrayList myRect=new ArrayList();
public void init()
{
fillArray(myRect);
for(int i=0; i
{
add(myRect.get(i));
}
}
public void run()
{
//bubbleSort(myRect);
selectionSort(myRect);
}
public void fillArray(ArrayListr)
{
int x=5;
int y=200;
int w=5;
int h=10 ;
Random rand=new Random();
for(int i=0; i
{
h=rand.nextInt(100)+5;
GRect myRect=new GRect(x,y,w,h);
myRect.setFilled(false);
myRect.setColor(Color.BLUE);
r.add(myRect);
x+=w;
}
}
public void swap( int p, int q)
{
int temp = p;
p = q;
q = temp;
}
public void selectionSort(ArrayListr)
{ GRect temp;
int count=1;
int p=0;
int q=0;
int smallest;
int size=r.size();
for(p=0; p
{ smallest=p;
GPoint P=r.get(p).getLocation();
GPoint Q=r.get(q).getLocation();
for(q=0;q>size-p; q--)
if (r.get(q).getHeight() < smallest)
smallest=q;
if (r.get(p).getHeight() != smallest)
{swap(p,smallest);
temp=r.get(p);
r.set(p,r.get(q));
r.set(q,temp);
pause(25);
r.get(p).setLocation(P);
r.get(q).setLocation(Q);
}
}
r.get(p).setVisible(true);
r.get(q).setVisible(true);
}
public static void main(String [] args)
{
new Sortline().start(args);
}
}
最佳答案
二级知识专家暖心欧巴
2021-01-11 20:00
public class Test {
public static int[] a = { 10, 32, 1, 9, 5, 7, 12, 0, 4, 3 }; // 预设数据数组
public static void main(String args[]) {
int i; // 循环计数变量
int Index = a.length;// 数据索引变量
System.out.print("排序前: ");
for (i = 0; i < Index - 1; i++)
System.out.printf("%3s", a);
System.out.println("");
SelectSort(Index - 1); // 选择排序
// 排序后结果
System.out.print("排序后: ");
for (i = 0; i < Index - 1; i++)
System.out.printf("%3s", a);
System.out.println("");
}
public static void SelectSort(int Index) {
int i, j, k; // 循环计数变量
int MinValue; // 最小值变量
int IndexMin; // 最小值索引变量
int Temp; // 暂存变量
for (i = 0; i < Index - 1; i++) {
MinValue = 32767; // 目前最小数值
IndexMin = 0; // 储存最小数值的索引值
for (j = i; j < Index; j++) {
if (a[j] < MinValue) // 找到最小值
{
MinValue = a[j]; // 储存最小值
IndexMin = j;
}
Temp = a; // 交换两数值
a = a;
a = Temp;
}
System.out.print("排序中: ");
for (k = 0; k < Index; k++)
System.out.printf("%3s", a[k]);
System.out.println("");
}
}
}
全部回答
1楼風聲提筆
2021-01-11 22:18
public void selectSort(int[] data, String sortType) {
if (sortType.equals("asc")) { //正排序,从小排到大
int index;
for (int i = 1; i < data.length; i++) {
index = 0;
for (int j = 1; j <= data.length - i; j++) {
if (data[j] > data[index]) {
index = j;
}
}
//交换在位置data.length-i和index(最大值)两个数
swap(data, data.length - i, index);
}
} else if (sortType.equals("desc")) { //倒排序,从大排到小
int index;
for (int i = 1; i < data.length; i++) {
index = 0;
for (int j = 1; j <= data.length - i; j++) {
if (data[j] < data[index]) {
index = j;
}
}
//交换在位置data.length-i和index(最大值)两个数
swap(data, data.length - i, index);
}
} else {
System.out.println("您输入的排序类型错误!");
}
printArray(data);//输出直接选择排序后的数组值
}
2楼噯ㄖ詘,美
2021-01-11 21:04
3
我要举报
如以上信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
推荐资讯
大家都在看