排序——冒泡、选择、插入、快速、归并(java)
- 实现插入排序
- 实现冒泡排序
- 实现快速排序
- 实现归并排序(和选择排序)
第一题(插入排序)代码:
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);
}}

浙公网安备 33010602011771号