Java内部排序

目录

交换排序

1、冒泡排序 

2、冒泡排序 (数据结构)

3、快速排序

选择排序

1、简单(直接)选择排序

2、树形选择排序

3、堆排序

插入排序

1、直接插入排序

2、折半插入排序

3、希尔排序

归并排序

基数排序

利用系统类实现排序


public static void main(String[] args){
	int arr []={49,38,65,97,76,13,27,49};
//	BubbleSort aa=new BubbleSort();
//	aa.bubble(arr);
	System.out.print("降序结果:");
	for(int i=0;i<arr.length;i++){
	    System.out.print(arr[i]+"  ");
	}
}

交换排序

1、冒泡排序 

小的往上浮

两两比较待排数组元素的大小,发现两个数组元素的次序相反时即进行交换,直到没有反序的数组元素为止。

class BubbleSort{//冒泡排序
	void bubble(int []src){
		for(int i=0;i<src.length;i++){
			//i表示循环的趟数
			for(int j=i+1;j<src.length;j++){
				//j表示每趟比较的次数
				if(src[i]<src[j]){
					int temp=src[i];
					src[i]=src[j];
					src[j]=temp;
				}
			}
		}
	}
}

运行结果: 

2、冒泡排序 (数据结构)

(1)大的往下坠

(2)比较第一个与第二个,然后比较第二个与第三个;n个元素最多要进行n-1趟排序,每趟排序的比较次数逐渐减1

class paixu 
{
	public void maopao(int a[]) 
	{
		int m=a.length-1;int flag=1;//flag用于标记某趟是否发生交换
		while((m>0) && (flag==1))
		{
			flag=0;//flag置为0,如果本趟排序没有发生交换,则不会执行下一趟排序
			for(int j=0;j<=m-1;j++)//j<=m-1;若<m,则j+1会越界出错
				if(a[j]>a[j+1])
				{
					flag=1;//表示本趟发生了交换
					int temp=a[j];a[j]=a[j+1];a[j+1]=temp;
				}
			--m;//第一趟之后,选出最大值,并放在了a[a.length-1]中
		}
	}
}

3、快速排序

选择排序

1、简单(直接)选择排序

class paixu 
{
	public void xuanze(int a[]) 
	{
		int l=a.length-1;
		for(int i=0;i<l;i++)//n个元素进行n-1趟比较,i代表趟数;j代表比较的次数
		{
			int k=i;
			for(int j=i+1;j<=l;j++)//注意:j<=l
				if(a[j]<a[k]) k=j;//k指向此趟排序中关键字最小的记录
			if(k!=i)
			{
				int temp=a[k];a[k]=a[i];a[i]=temp;
			}
		}
	}
}

2、树形选择排序

3、堆排序

插入排序

1、直接插入排序

基本思想:经过i-1遍处理后,L[1……i-1]已排好序,第i遍处理仅将L[i]插入L[1……i-1]的适当位置。

public void charu(int a[]) 
	{
		int len=a.length;
		for(int i=1;i<len;i++)
		{
			int temp=a[i];//将插入的记录暂存
			int j=i;
			while(a[j-1]>temp)//从后向前寻找插入位置
			{
				a[j]=a[j-1];//记录逐个后移
				j--;
				if(j<=0)//=0,由于j-1防止越界
					break;
			}
			a[j]=temp;//插入到合适的位置
		}
	}

2、折半插入排序

3、希尔排序

归并排序

基数排序

利用系统类实现排序

系统类库中Arrays类提供了多种操作数组的方法,对于排序有:

(1)public static void sort(int[] a)

public static void main(String[] args) {
		int a[] = { 4, -5, 23, 7 };
		Arrays.sort(a);// 调用Arrays类的整型数组排序方法
		for (int i = 0; i < a.length; i++)
			System.out.print(a[i] + "  ");

		char b[] = { 'c', 'e', 'a', 'b', 'g' };
		Arrays.sort(b, 0, 3);// 只排下标为1-2的元素
		for (int i = 0; i < b.length; i++)
			System.out.print(b[i] + "  ");

		String c[] = { "gra", "gab", "bna" };
		Arrays.sort(c);// 只排下标为1-2的元素(下标的不参与排序)
		for (int i = 0; i < c.length; i++)
			System.out.print(c[i] + "  ");
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值