数値を入力し、複数のソート方法(java)を採用
10083 ワード
import java.util.Scanner;
public class test01 {
private static final String[] a = null;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int count=0;
int m;
int a[] = new int[10];
Scanner in=new Scanner(System.in);
while(count<10){
System.out.print(" "+(count+1)+" :");
// m=in.nextInt();
try{
m=Integer.parseInt(in.next());
a[count]=m;
}catch(NumberFormatException e){
System.out.println(" !");
continue; // , , 。
}
count++;
}
System.out.println(" :");
display(a);
System.out.println(" ");
BubbleSort1(a);
display(a);
System.out.println(" ");
InsertSort(a);
display(a);
SelectSort(a,count);
System.out.print(" :"+getMax(a));
}
/*
*
*/
private static void SelectSort(int[] arr, int n) {
// TODO Auto-generated method stub
int i, j;
int min;
for(i = 0; i < n - 1; i++)
{
int index = 0;
min = arr[i];
for(j = i + 1; j < n; j++) // i+1 - n arr[i]
{
if(arr[j] < min)
{
min = arr[j];
index = j;
}
}
if(index != 0) // arr[i]
{
arr[i] = arr[i]^arr[index];
arr[index] = arr[i]^arr[index];
arr[i] = arr[i]^arr[index];
/* arr[i]=arr[i]+arr[index];
arr[index]=arr[i]-arr[index];
arr[i]=arr[i]-arr[index]; */
}
}
}
/*
*
*/
private static void InsertSort(int[] a) {
// TODO Auto-generated method stub
int i,j,temp;
for(i=0;i<a.length;i++){
temp=a[i];
for(j=i;j>0 && temp<a[j-1];j--){
a[j]=a[j-1];
}
a[j]=temp;
}
}
//
private static void display(int[] a) {
// TODO Auto-generated method stub
StringBuffer sb=new StringBuffer();
for(int i=0;i<a.length;i++){
sb.append(a[i]+"===");
}
//sb.deleteCharAt(sb.length());
System.out.println(sb.toString());
}
//
/*
*
*/
private static void BulleSort(int[] a) {
// TODO Auto-generated method stub
int temp;
boolean exchange;
for(int i=1;i<a.length;i++){
exchange=false;
for(int k=a.length-1;k>=i;k--){ //
if(a[k-1]>a[k]){
temp=a[k-1];
a[k-1]=a[k];
a[k]=temp;
exchange=true;
}
if(exchange=false) return; // ,
}
}
}
//
private static void BubbleSort1(int[] a){
int temp,i,k;
for(i=0;i<a.length;i++){
for(k=0;k<a.length-i-1;k++){
if(a[k]>a[k+1]){
temp=a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
}
}
public static int getMax(int[] a){
int max = 0;
for(int i=0;i<a.length-1;i++){
max=a[i];
for(int j=i+1;j<a.length;j++){
if(a[j]>max){
max=a[j];
}
}
}
return max;
}
}
このプログラムでは、2つの数値を交換するために異なる方法を採用します.
方法1:a=a^b; b=a^b;a=a^b;
方法2:a=a+b;b=a-b;a=a-b;
以前は変数を定義する方法でデータ交換を実現していた.この点は注意に値する!