PDA

View Full Version : Mọi người bắt lỗi giúp mình bài toán con con về Selection Sort



thanhan1
20-08-2010, 15:38
import java.util.Scanner;
public class SelectionSort
{
int min;
Scanner s;
private int n;
private static int [] a;

SelectionSort()
{
s = new Scanner(System.in);
}
public static void main(String [] args)
{
SelectionSort se = new SelectionSort();
se.inputDisplay();
se.outputDisplay(se.xuli(a));
}
public void inputDisplay()
{
System.out.print("Nhap vao so phan tu cua mang : ");
n = s.nextInt();
a = new int[n];
System.out.println("Nhap vao cac phan tu : ");
for(int i = 0;i<n-1;i++)
{
System.out.print("a["+i+"] = ");
a[i] = s.nextInt();
}
}

public int[] xuli(int [] arr)
{
for(int i = 0;i<arr.length-1;i++)
{
min = arr[i];
for(int j = i+1;j<arr.length;j++)
{
if(arr[j]<min)
min = arr[j];

}
int temp = min;
min = arr[i];
arr[i] = temp;
}
return arr;
}

public void outputDisplay(int [] arr)
{
System.out.print("Mang duoc sap xep la : ");
for(int i = 0;i<arr.length-1;i++)
System.out.print(arr[i]+ " ");
}

}
Mình chạy thì ra 1 mảng toàn 0.Thanks!

huugiang954
03-09-2010, 05:07
import java.util.Scanner;
public class SelectionSort
{
int min;
Scanner s;
private int n;
private static int [] a;

SelectionSort()
{
s = new Scanner(System.in);
}

public static void main(String [] args)
{
SelectionSort se = new SelectionSort();
se.inputDisplay();
se.outputDisplay(se.xuli(a));
}

public void inputDisplay(){
System.out.print("Nhap vao so phan tu cua mang : ");
n = s.nextInt();
a = new int[n];
System.out.println("Nhap vao cac phan tu : ");
for(int i = 0;i<n-1;i++){
System.out.print("a["+i+"] = ");
a[i] = s.nextInt();
}
}

public int[] xuli(int [] arr)
{
for(int i = 0;i<arr.length-1;i++){
min = arr[i];
for(int j = i+1;j<arr.length;j++){
if(arr[j]<min)
min = arr[j];
}
int temp = min;
min = arr[i];
arr[i] = temp;
}
return arr;
}

public void outputDisplay(int [] arr)
{
System.out.print("Mang duoc sap xep la : ");
for(int i = 0;i<arr.length-1;i++)
System.out.print(arr[i]+ " ");
}

}


Bạn nên xem lại 2 code sau:


public static void main(String [] args)
{
SelectionSort se = new SelectionSort();
se.inputDisplay();
se.outputDisplay(se.xuli(a));
}


Dòng này: se.outputDisplay(se.xuli(a)); G không biết có lấy được biến a của biến se không nữa.



public int[] xuli(int [] arr)
{
for(int i = 0;i<arr.length-1;i++){
min = arr[i]; // Lay gia tri
for(int j = i+1;j<arr.length;j++){
if(arr[j]<min)
min = arr[j]; // Luu gia tri vao bien min
}
int temp = min; // Gan bien temp
min = arr[i]; // Gan bien min
arr[i] = temp; // Buoc nay bi mất gia tri nhỏ nhất.
}
return arr;
}


Thuật toán sắp xếp sai. Bạn nên sữa lại.




public int[] xuli(int [] arr)
{
for(int i = 0; i < arr.length - 1; i++){
min = i; // Lay vi tri dau tien
for(int j = i+1; j < arr.length; j++){
if(arr[j] < arr[min]) // So sanh 2 vi tri trong mang
min = j; // Luu vi tri
}
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
return arr;
}


Lâu rồi G không xài đến Java nên cũng không cập nhật cách lấy dữ liệu qua Lớp Scan. Bạn chỉnh lại cho phù hợp.