常用的排序算法详解

      常用的排序算法包括冒泡排序、选择排序、插入排序和快速排序。下面将对这些算法进行详解。

一、快速排序
        1、基本思想
              ①、快速排序算法利用分治策略思想,并与递归相结合。
            ②、选取数组中的一个值flag作为基值,第一次循环,使得flag左边的值都小于flag,右边的值都大于或等于flag,基值的选取一般为数组的第一个值。
            ③、将flag左边的值看做一组,右边的值看做另一组。递归②步骤,直至数组中还有一个值为止。
         2、算法实现
public class QuickSort{

	public static void main(String[] args){
		//测试数据
		int [] b={49,38,65,97,76,13,26,49,88,74,21,0,59,97,56,77,41,65,20};
		quickSort01(b,0,b.length-1);
		for(int i=0;i=end){
			//当数组里只有一个值时,退出递归。
			return;
		}
		while(low=flag)
				hight--;
			if(low

常用的排序算法详解_第1张图片
二、冒泡排序
     1、基本思想
             ①、假设数组长度为N,第一次循环中,从第一个数开始依次比较两个相邻元素,如果后者比前者大,则交换位置。
             ②、第一次遍历中最大数放到了最后,再循环遍历N-i,将最大值放在N-i位。
             ③、直到遍历完整个数组。

 2、算法实现

public class BubbleSort{

	public static void main(String[] args){
		//int [] b={49,38,65,97,76,13,26,49,88,74,21,0,59,97,56,77,41,65,20};
		int[] b={21,2,3,56,65,78,89,100,102};
		bubbleSort1(b);
		for(int i=0;i

运行结果为:

常用的排序算法详解_第2张图片
3、冒泡排序优化01
     1、基本思想
          ①、假设一个数组几乎有序,在交换一个元素后就变得有序,没有必要进行N次遍历。
          ②、设置一个标志变量flag,判断每次冒泡排序有没有元素交换,若有则flag=true,否则说明数组已经有序。置为false
          ③、循环遍历,直到不满足条件时,则排序完成。
     2、算法实现

public class BubbleSort{

	public static void main(String[] args){
		int [] b={49,38,65,97,76,13,26,49,88,74,21,0,59,97,56,77,41,65,20};
		//int[] b={21,2,3,56,65,78,89,100,102};
		bubbleSort2(b);
		for(int i=0;i

}

运行结果:

常用的排序算法详解_第3张图片

4、冒泡排序最佳优化
      1、基本思想
           ①、假设数组后半部分已经有序,且均大于前半部分,则每次遍历没有必要把后面一部分也一块遍历。
           ②、设置标志位,判断最后一次交换位置i,另index=i,下次遍历只需要遍历到此就好。
           ③、循环遍历,直到结束。
      2、算法实现

public class BubbleSort{

	public static void main(String[] args){
		int [] b={49,38,65,97,76,13,26,49,88,74,21,0,59,97,56,77,41,65,20};
		//int[] b={21,2,3,56,65,78,89,100,102};
		bubbleSort3(b);
		for(int i=0;i

}

运算结果:

三、插入排序
      1、基本思想
         ①、将数组中的值插入到一个已经排序好的数组中,得到一个新的有序的数组。
         ②、一般去数组的第一个值作为新数组的值,再将后面的数值按照大小规律插入到新数组中。
         ③、直到原数组元素为0;
      2、算法实现
public class InsertionSort{

	public static void main(String[] args){
		int [] b={49,38,65,97,76,13,26,49,88,74,21,0,59,97,56,77,41,65,20};
		insertionSort(b);
		for(int i=0;i=0 && insertIndex
运行结果:
常用的排序算法详解_第4张图片
四、选择排序
       1、基本思想
            ①、从数组第一个数开始,依次跟后面的数比较,若比后面的数大,则交换。
            ②、循环比较,直到数组结束。

       2、算法实现
public class SelectSort{

	public static void main(String[] args){
		int [] b={49,38,65,97,76,13,26,49,88,74,21,0,59,97,56,77,41,65,20};
		selectSort(b);
		for(int i=0;i

运行结果:

你可能感兴趣的:(java基础篇)