java中数组中常用的算法排序汇总

1.算法的相关概念:

1. 排序:
假设含有n个记录的序列为{R1,R2,…,Rn},其相应的关键字序列为{K1,K2,…,Kn}。将这些记录重新排序为{Ri1,Ri2,…,Rin},使得相应的关键字值满足条Ki1<=Ki2<=…<=Kin,这样的一种操作称为排序。

2. 目的:
通常来说,排序的目的是快速查找。

3. 衡量排序算法的优劣:
1)时间复杂度:分析关键字的比较次数和记录的移动次数
2)空间复杂度:分析排序算法中需要多少辅助内存
3)稳定性:若两个记录A和B的关键字值相等,但排序后A、B的先后次序保持不变,则称这种排序算法是稳定的。

4. 排序算法分类:
主要分为内部排序和外部排序。
1)内部排序:整个排序过程不需要借助于外部存储器(如磁盘等),所有排序操作都在内存中完成。常见的十大内部排序有:
选择排序:直接选择排序,堆排序
交换排序:冒泡排序,快速排序
插入排序:直接插入排序,折半插入排序,Shell排序
归并排序,桶排序,基数排序
2)外部排序:参与排序的数据非常多,数据量非常大,计算机无法把整个排序过程放在内存中完成,必须借助于外部存储器(如磁盘)。外部排序最常见的是多路归并排序。可以认为外部排序是由多次内部排序组成。

5. 算法的5大特征:
有穷性,确定性,可行性,输入性,输出性。


1.冒泡排序:

public class Bubblesort class{
	public static void main(String[] args){
		int arr = new int[]{-20,-5,3,6,2,15,-7,-2,1};
		for(int i = 0;i < arr.length - 1;i++){
			for(int j = 0;j < arr.length - 1 - i;j++){
				if(arr[j] > arr[j+1]){
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
				}
			}
		}
		System.out.println(Arrays.toString(arr));
	}
}

2.快速排序:
具体过程参考Java的快速排序
主要代码如下:

public class QuickSort{
	public static void quickSort(int[]arr,int low,int high){
		int i;j;temp;t
		if(low > high){
			return;
		}
		i = low;
		j = high;
		temp = arr[low];
		while(i < j){
			while(i < j && temp <= arr[j]){
				j--;
			}
			while(i < j && temp >= arr[j]){
				i++;
			}
			if(i < j){
				t = arr[j];
				arr[j] = arr[i];
				arr[i] = t;
			}
		}
		 //最后将基准为与i和j相等位置的数字交换
		arr[low] = arr[i];
		arr[i] = temp;
		//递归调用左半数组
        quickSort(arr, low, j-1);
        //递归调用右半数组
        quickSort(arr, j+1, high);
	}
	public static void main(String[] args){
		int[] arr = {10,7,2,4,7,62,3,4,2,1,8,9,19};
		quickSort(arr, 0, arr.length-1);
		for (int i = 0; i < arr.length; i++){
			System.out.println(arr[i]);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值