这个程序主要是为了熟悉冒泡,选择,插入三种排序方法。还可以理解静态方法的使用,和一种比较简洁的二值交换程序。
import java.util.Scanner;
import java.util.Arrays;
public class manySort{
public static void main(String []args){
Scanner input = new Scanner(System.in);
show("input a num: ");
int count = input.nextInt();
int [] arrays1 = new int [count];
show("input everyone in array");
for(int k =0;k<count;k++){
arrays1[k] = input.nextInt();
}
int [] arrays2 = Arrays.copyOf(arrays1,arrays1.length);
int [] arrays3 = Arrays.copyOf(arrays1,arrays1.length);
// System.out.println(Arrays.toString(arrays2));
show("the result of bubbleSort:");
bubbleSort(arrays1);
printArray(arrays1);
show("the result of selectSort:");
selectSort(arrays2);
printArray(arrays2);
show("the result of insertSort:");
insertSort(arrays3);
printArray(arrays3);
}
public static void show(String name)
{
System.out.println(name);
}
public static void bubbleSort(int [] array)
{
for(int i=0;i<array.length-1;i++){
for(int j=0;j<array.length-1-i;j++){
if(array[j]>array[j+1]){
array[j] = array[j+1]-array[j]+(array[j+1]=array[j]);
}
}
}
}
public static void selectSort(int [] array)
{
for(int i=0;i<array.length-1;i++){
//System.out.println("OK2");
int min = i;
for(int j=i+1;j<array.length;j++){
//System.out.println("OK3");
if(array[min]>array[j])
min = j;
}
//System.out.println("OK1");
if(i != min)
array[i]=array[min]-array[i]+(array[min]=array[i]);
}
}
public static void insertSort(int [] array)
{
for (int i=1;i<array.length;i++){
int j = i;
int temp = array[i];
while(j>0 && temp<array[j-1]){
array[j] = array[j-1];
j--;
}
array[j] = temp;
}
}
public static void printArray(int[] array)
{
for(int i=0;i<array.length;i++){
System.out.print(array[i]+" ");
}
System.out.print("\n");
}
}
又写了一遍,啊啊啊!!!
import java.util.Scanner;
import java.util.Arrays;
public class manySort{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("please input the number of array: ");
int num = input.nextInt();
int[] arrays = new int[num];
System.out.println("please input everyone in array: ");
for(int i=0;i<arrays.length;i++){
arrays[i] = input.nextInt();
}
Buddle b = new Buddle("BuddleSort");
Select s = new Select("SelectSort");
Insert i = new Insert("InsertSort");
SelectSort S = new SelectSort();
// S.Set(b);
S.Set(s);
//S.Set(i);
S.Sorts(arrays);
S.Print(arrays);
}
}
//class写成Class,注意形参的设计
class SelectSort{
private Sort s = null;
public void Set(Sort s){
this.s =s;
}
public void Sorts(int[] arrays){
s.Algorithm(arrays);
}
public void Print(int[] arrays){
s.printArr(arrays);
}
}
abstract class Sort{
private String name;
public Sort(String name){
this.name = name;
}
public abstract void Algorithm(int[] arrays);
public String getName(){
return name;
}
public void printArr(int[] arrays){
if(arrays.length == 0){
System.out.println("NO Value");
}
System.out.print(getName()+":");
boolean flag = false; //flag 不能写成int类型的,boolean——false,true
for(int i:arrays){ //for循环
if(!flag){
flag = true;
}else{
System.out.print("<");
}
System.out.print(i);
}
}
}
class Buddle extends Sort{
public Buddle(String name){
super(name);
}
public void Algorithm(int[] arrays){
for(int i=0;i<arrays.length-1;i++)
{
for(int j=0;j<arrays.length-1-i;j++)
{
if(arrays[j]>arrays[j+1]){
arrays[j] = arrays[j+1]-arrays[j]+(arrays[j+1]=arrays[j]);
}
}
}
}
}
class Select extends Sort{
public Select(String name){
super(name);
}
public void Algorithm(int[] arrays){
int min;
for(int i=0;i<arrays.length-1;i++)
{
min = i;
for(int j=i+1;j<arrays.length;j++){
if(arrays[min]>arrays[j]){
min = j;
}
}
//这一点没想好
if(i != min){
arrays[i] = arrays[min]-arrays[i]+(arrays[min]=arrays[i]);
}
//arrays[i] = arrays[min];
}
}
}
class Insert extends Sort{
public Insert(String name){
super(name);
}
public void Algorithm(int[] arrays){
int j;
int temp;
for(int i=1;i<arrays.length;i++){
j = i;
temp = arrays[i];
while(j>0&&temp<arrays[j-1])
{
arrays[j] = arrays[j-1];
j--;
}
arrays[j] = temp;
}
}
}