(java)冒泡排序 、快速排序 、直接插入排序

1.冒泡排序

冒泡排序是按照一定顺序比较相邻两个数的大小,如果前一个数比后一个数大(或小),则交换它们的顺序,直到按要求排列好。
代码:

package MyClass1;
public class Bubblesort {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[]={1,-3,5,-6,0,7,-9,14,-11,8};
		System.out.println("排序前:");
		for(int i=0;i<a.length;i++)
		{
			System.out.print(a[i]+" ");
		}
		System.out.println();
		System.out.println("排序后:");
		for(int i=1;i<a.length;i++)
		{
			for(int j=0;j<a.length-i;j++)
			{
				if(a[j]>a[j+1])
				{
					int temp;
					temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		for(int i=0;i<a.length;i++)
		{
			System.out.print(a[i]+" ");
		}
    }
}

结果截图:
在这里插入图片描述

2.快速排序

快速排序是先找一个基准数(通常为第一个或最后一个数),将其他数与基准数比较,然后将原序列分为比基准数大和比基准数小的两部分,再用用样的方法去递归排列这两部分,以此类推。
代码:

//快速排序
package MyClass1;

public class Quicksort {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int a[]={12,-24,39,0,-33,45,56,-89};
	System.out.println("排序前:");
	for(int i=0;i<a.length;i++)
	{
		System.out.print(a[i]+" ");
	}
	System.out.println();
	System.out.println("排序后:");
	int low=0;
	int high=a.length-1;
	quicksort(a,low,high);
	for(int k=0;k<=high;k++)
	{
		System.out.print(a[k]+" ");
	}
}
public static void quicksort(int[] a, int low, int high) {  
    if (low < high) {  
        int i=low;  
        int j=high;  
        int temp=a[i]; 
        while(i<j)
        {
        	while (i<j && a[j]>temp)  
        		j--;  
        	if (i<j) 
        	{  
        		a[i]=a[j];   
        	}  
        	while (i<j&&a[i]<=temp)  
        		i++;  
        	if (i < j) 
        	{  
        		a[j] = a[i]; 
        	}  
        	a[i] = temp;  
        	quicksort(a, low, i-1);  
        	quicksort(a, i+1, high);  
            }
        }
	}
}

结果截图:
在这里插入图片描述

3.直接插入排序

直接插入排序是在原序列中把第n个元素插入到前面的有序数中(假设前面的n-1(n>=2)个数的顺序已排好),使这n个数排好顺序,反复循环,直到全部排好顺序。
代码:

//直接插入排序
package MyClass1;
public class StraightInsertSort {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[]= {111,-9,6,12,-54,35,0,-4};
		System.out.println("排序前:");
		for(int i=0;i<a.length;i++)
		{
			System.out.print(a[i]+" ");
		}
		System.out.println();
		System.out.println("排序后:");
		int temp;
	      for (int i=1; i<a.length; i++) 
	      {
	         for (int j=i; j>0&&a[j]<a[j-1]; j--) 
	         {
	            temp=a[j];
	            a[j]=a[j-1];
	            a[j-1]=temp;
	         }
	      }
	      for(int i=0;i<a.length;i++)
			{
    				System.out.print(a[i]+" ");
    			}
    	 }
}

结果截图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值