排序算法(Java随笔)—冒泡排序&快速排序

排序(Sort)是将一组数据按照一定的规则进行排列的,一般按递增或递减的顺序来进行排列。

最基本的排序法有:

排序算法(Java随笔)—冒泡排序&快速排序_第1张图片

冒泡排序(Bubble Sort):是所有排序算法中最简单的,最基本的一种,思路即交换,通过相邻数据的交换来达到排序的目的。

排序算法(Java随笔)—冒泡排序&快速排序_第2张图片

冒泡排序算法实例—代码实现:

//冒泡排序(bubble sort)
	int[] bubbleSort(int data[]){
		int temp;
		//外循环从1开始,比数组长度少1
		for(int i=1;idata[j+1]){
					temp=data[j];
					data[j]=data[j+1];
					data[j+1]=temp;
				}
			}
		}
		return data;
	}

运行测试:

//冒泡排序算法测试
	public static void main(String[] args) {
		int[] data =new int[]{3,4,1,2,8,0,6,9,7,1};
		data=bubbleSort(data);
		System.out.println(Arrays.toString(data));
	}

//输出结果:
[0, 1, 1, 2, 3, 4, 6, 7, 8, 9]

快速排序(Quick Sort):和冒泡排序算法类似,都是基于交换的,对冒泡排序进行了改进,从而具有更高的执行效率。

快速排序的核心在于:选取了一个分界值,通过该分解值将数组分成了两部分,大于分界值的数据作为一部分放于分界值右边,小于分界值的数据作为一部分放于分界值的左边。然后再次分别从两部分数据中选出一个分界值,重复之前的操作。所以,会用到的技术有:分界值递归交换

快速排序算法实例—代码实现:

//快速排序——分界值+递归+交换
	int[] quickSort(int[] data,int start,int end){
		int tbase=data[start];//分界值——一般取第一个数据
		int tstart=start;
		int tend=end;
		
		while(tstart=tbase&&tstarttbase){
				int temp1=data[tend];
				data[tend]=data[tstart];
				data[tstart]=temp1;
			}
		}
		//上面已经完成了数组的第一步排序,即分界值两端的数据安排、接下来递归继续分段排序
		if(tstart>start){//递归排序分界值左端的数据
			quickSort(data, start, tstart-1);//排序扫分界值左端第一个数据结束
		};
		if(tend

运行测试:

//快速排序算法测试
	public static void main(String[] args) {
		int[] data =new int[]{3,4,1,2,8,0,6,9,7,1};
		data=quickSort(data,0,data.length-1);
		System.out.println(Arrays.toString(data));
	}

//输出结果:
[0, 1, 1, 2, 3, 4, 6, 7, 8, 9]

 

你可能感兴趣的:(排序算法)