排序——冒泡、选择、插入、快速、归并(java)

  1. 实现插入排序
  2. 实现冒泡排序
  3. 实现快速排序
  4. 实现归并排序(和选择排序)

第一题(插入排序)代码:

package javab;

 

import java.util.Scanner;

 

public class Insert_Sort {

static void zjinsert(int[] array){//直接插入排序法

int i,j,temp;

int n=array.length;

for(i=1;i<n;i++){

temp=array[i];

j=i-1;

while(j>-1&&temp<=array[j])

{

array[j+1]=array[j];

j--;

}

array[j+1]=temp;

}

}

static void shellSort(int[] array){//希尔排序

int x,i,j,d;

int n=array.length;

d=n/2;

while(d>=1){

for(i=d;i<n;i++){

x=array[i];

j=i-d;

while((j>=0)&&(x<=array[j])){

array[j+d]=array[j];

j=j-d;

}

array[j+d]=x;

}

d=d/2;

}

 

}

public void show(int[] array){

System.out.println("排序后:");

for(int i=0;i<array.length;i++){

System.out.print(array[i]+"");

}

System.out.println();

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner reader=new Scanner(System.in);

System.out.println("请输入整型数组的元素:");

String str=reader.nextLine();

String[] num=str.split(" ");

int[] array=new int[num.length];

for(int i=0;i<num.length;i++){

array[i]=Integer.parseInt(num[i]);

}

System.out.println("直接插入法排序:");

Insert_Sort s=new Insert_Sort();

s.zjinsert(array);

s.show(array);

System.out.println("希尔排序:");

Insert_Sort m=new Insert_Sort();

m.shellSort(array);

m.show(array);

 

}

 

}

 

第二题(冒泡排序)代码:

package javab;

 

import java.util.Scanner;

 

public class Bubblesort {

public void bubbleSort(int[] array){

/*for(int i=0;i<array.length;i++){

for(int j=0;j<array.length-1;j++)

if(array[j+1]<array[j]){

int temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}*/

for(int i=0;i<array.length;i++){

for(int j=0;j<array.length;j++)

if(array[j]>array[i]){

int temp=array[j];

array[j]=array[i];

array[i]=temp;

}

}

}

public void show(int[] array){

System.out.println("排序后:");

for(int i=0;i<array.length;i++){

System.out.print(array[i]+"");

}

System.out.println();

}

public static void main(String[] args){

Scanner reader=new Scanner(System.in);

System.out.println("请输入整型数组的元素:");

String str=reader.nextLine();

String[] num=str.split(" ");

int[] array=new int[num.length];

for(int i=0;i<num.length;i++){

array[i]=Integer.parseInt(num[i]);

}

Bubblesort s=new Bubblesort();

s.bubbleSort(array);

s.show(array);

}

}

 

第三题(快速排序)代码:

package javab;

 

import java.util.Scanner;

 

public class QuickSort {

static void lkspx(int[] a, int oldHead, int oldRear) {

if (oldHead < oldRear) {

int head = oldHead;

int rear = oldRear;

int temp = a[head];

while (head < rear) {

while (head < rear && temp <= a[rear]) {

rear--;

}

if (head < rear) {

a[head] = a[rear];

head++;

}

while (head < rear && temp >= a[head]) {

head++;

}

if (head < rear) {

a[rear] = a[head];

rear--;

}

}

a[head] = temp;

lkspx(a, oldHead, rear - 1);

lkspx(a, rear + 1, oldRear);

}

}

static void display(int[] a){

for(int elemt:a){

System.out.print(elemt+" ");

}

System.out.println();

}

    static void show(int[] array){

System.out.println("排序后:");

for(int i=0;i<array.length;i++){

System.out.print(array[i]+"");

}

System.out.println();

}

public static void main(String[] args) {

// TODO 自动生成的方法存根

Scanner sc=new Scanner(System.in);

System.out.println("请输入待排序的个数:");

int n=sc.nextInt();

System.out.println("请输入各数:");

int[] a=new int[n];

for(int i=0;i<n;i++){

a[i]=sc.nextInt();

}

lkspx(a,0,a.length-1);

display(a);

//show(a);

sc.close();

}

 

}

第四题(归并、选择排序)代码:

package javab;

 

import java.util.Scanner;

public class MergeSort {

static void selectSort(int[] array){

//简单选择排序

int i,j,k,x,temp,n=array.length;

for(i=1;i<n;i++){

k=i;

for(j=i;j<n;j++)

if(array[j]<array[k])

k=j;

if(i!=k)

{

x=array[i];

array[i]=array[k];

array[k]=x;

}

}

}

public void merge(int[] array,int[] swap,int k){

int n=array.length;

int m=0,l1,u1,l2,u2,i,j;

l1=0;

while(l1+k<=n-1){

l2=l1+k;

u1=l2-1;

if(l2+k<=n-1){

u2=l2+k-1;

}else{

u2=n-1;

}

for(i=l1,j=l2;i<=u1&&j<=u2;m++){

if(array[i]<array[j]){

swap[m]=array[i];

i++;

}else{

swap[m]=array[j];

j++;

}

}

while(i<=u1){

swap[m]=array[i];

i++;

m++;

}

while(j<=u2){

swap[m]=array[j];

j++;

m++;

}

l1=u2+1;

}

for(i=l1;i<n;i++,m++){

swap[m]=array[i];

}

}

public void mergeSort(int[] array){

int i;

int n=array.length;

int k=1;

int[] swap=new int[n];

while(k<n){

merge(array,swap,k);

for(i=0;i<n;i++)

array[i]=swap[i];

k=2*k;

}

}

public void show(int[] array){

System.out.println("排序后:");

for(int i=0;i<array.length;i++){

System.out.print(array[i]+"");

}

System.out.println();

}

public static void main(String[] args){

Scanner reader=new Scanner(System.in);

System.out.println("请输入整型数组的元素:");

String str=reader.nextLine();

String[] num=str.split(" ");

int[] array=new int[num.length];

for(int i=0;i<num.length;i++){

array[i]=Integer.parseInt(num[i]);

}

MergeSort s=new MergeSort();

s.mergeSort(array);

s.show(array);

}}

posted @ 2014-06-14 19:31  Coral一川烟草  阅读(254)  评论(0)    收藏  举报