冒泡排序+选择排序+插入排序+希尔排序+快速排序(Java)
public class MaoSort {
public static void main(String args[]){
int [] nums=new int[20];
Random r1= new Random();
for (int i = 0; i <20 ; i++) {
nums[i] = r1.nextInt(20);
}
System.out.println("冒泡排序");
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
System.out.println();
mySort(nums);
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
for (int i = 0; i <20 ; i++) {
nums[i] = r1.nextInt(20);
}
System.out.println();
System.out.println("选择排序");
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
System.out.println();
selectionSort(nums);
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
for (int i = 0; i <20 ; i++) {
nums[i] = r1.nextInt(20);
}
System.out.println();
System.out.println("插入排序");
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
System.out.println();
insertSort(nums);
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
for (int i = 0; i <20 ; i++) {
nums[i] = r1.nextInt(20);
}
System.out.println();
System.out.println("希尔排序");
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
System.out.println();
shellSort(nums);
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
for (int i = 0; i <20 ; i++) {
nums[i] = r1.nextInt(20);
}
System.out.println();
System.out.println("快速排序");
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
System.out.println();
quickSort(nums,0,nums.length-1);
for (int i = 0; i <nums.length ; i++) {
System.out.print(nums[i] + ",");
}
}
public static void mySort(int [] nums){
//冒泡排序
int k;
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < nums.length-1-i; j++) {
if(nums[j]<nums[j+1]){
k=nums[j];
nums[j]=nums[j+1];
nums[j+1]=k;
}
}
}
}
public static void selectionSort(int [] nums){
//选择排序
int minnum;
int numindex;
int k;
for (int i = 0; i < nums.length; i++) {
minnum=nums[i];
numindex=i;
for (int j = i+1; j < nums.length; j++) {
if(nums[j]<minnum){
minnum=nums[j];
numindex=j;
}
}
k=nums[i];
nums[i]=nums[numindex];
nums[numindex]=k;
}
}
public static void insertSort(int [] nums){
//插入排序
int k;
for (int i = 1; i < nums.length; i++) {
for (int j = i; j > 0 && nums[j]<nums[j-1]; j--) {
k=nums[j];
nums[j]=nums[j-1];
nums[j-1]=k;
}
}
}
public static void shellSort(int [] nums){
//希尔排序
int k;
int h=1;
while(h<nums.length/3) h=3*h+1;
while(h>=1) {
for (int i = h; i < nums.length; i++) {
for (int j = i; j >= h && nums[j] < nums[j - h]; j-=h) {
k = nums[j];
nums[j] = nums[j - h];
nums[j - h] = k;
}
}
h=h/3;
}
}
public static void quickSort(int [] nums, int begin,int end){
//快速排序
if(begin>end)
return;
int i=begin;
int j=end;
int tmp=nums[begin];
while(i!=j){
while(i<j && nums[j]>=tmp)
j--;
while (i<j && nums[i]<=tmp)
i++;
if(i<j){
int x = nums[i];
nums[i]=nums[j];
nums[j]=x;
}
}
//tmp=nums[begin];
nums[begin]=nums[i];
nums[i]=tmp;
quickSort(nums, begin,i-1);
quickSort(nums, i+1,end);
}