程序员必知的8大排序(三)——-冒泡排序,快速排序(java实现)

程序员必知的8大排序(三)——-冒泡排序,快速排序(java实现)接上一篇:程序员必知的8大排序(二)——-简单选择排序,堆排序(java实现) 5.冒泡排序(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)实例:(3)用java实现publicclass

大家好,又见面了,我是你们的朋友全栈君。

接上一篇:程序员必知的8大排序(二)——-简单选择排序,堆排序(java实现)

 

5.冒泡排序

(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。

(2)实例:

程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)

(3)用java实现

public class bubbleSort {
public	bubbleSort(){
	 int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
	int temp=0;
	for(int i=0;i<a.length-1;i++){
		for(int j=0;j<a.length-1-i;j++){
		if(a[j]>a[j+1]){
			temp=a[j];
			a[j]=a[j+1];
			a[j+1]=temp;
		}
		}
	}
	for(int i=0;i<a.length;i++)
		System.out.println(a[i]);	
}
}

6.快速排序

1)基本思想:选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素,此时基准元素在其排好序后的正确位置,然后再用同样的方法递归地排序划分的两部分。

2)实例:

程序员必知的8大排序(三)-------冒泡排序,快速排序(java实现)

3)用java实现

 

public class quickSort {

  inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};

public quickSort(){

    quick(a);

    for(int i=0;i<a.length;i++)

       System.out.println(a[i]);

}

public int getMiddle(int[] list, int low, int high) {   

            int tmp = list[low];    //数组的第一个作为中轴   

            while (low < high) {   

                while (low < high && list[high] >= tmp) {   

                    high--;   

                }   

                list[low] = list[high];   //比中轴小的记录移到低端   

                while (low < high && list[low] <= tmp) {   

                    low++;   

                }   

                list[high] = list[low];   //比中轴大的记录移到高端   

            }   

           list[low] = tmp;              //中轴记录到尾   

            return low;                   //返回中轴的位置   

        }  

public void _quickSort(int[] list, int low, int high) {   

            if (low < high) {   

               int middle = getMiddle(list, low, high);  //将list数组进行一分为二   

                _quickSort(list, low, middle - 1);        //对低字表进行递归排序   

               _quickSort(list, middle + 1, high);       //对高字表进行递归排序   

            }   

        } 

public void quick(int[] a2) {   

            if (a2.length > 0) {    //查看数组是否为空   

                _quickSort(a2, 0, a2.length - 1);   

        }   

       } 

}


接下一篇:程序员必知的8大排序(四)——-归并排序,基数排序(java实现) .

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151101.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • kettle连接数据库

    kettle连接数据库

    2020年11月9日
    201
  • idea 好用插件_效率软件推荐

    idea 好用插件_效率软件推荐0.引言不同类型的开发插件具备不同的作用,有能够直接提升我们开发效率的,也有能够规范我们代码的。在茫茫的插件海中,结合我这些年的使用总结,给大家推荐几款IDEA插件1.代码规范类1.1AlibabaJavaCodingGuidelines介绍首当其冲的必定是阿里的代码规范插件AlibabaJavaCodingGuidelines,从我还是小白时到现在这款插件已经陪伴了我几年光阴。我愿称它为你最少最少要遵守的代码规范。安装后,当你书写的代码不符合阿里规范时,会将代码标黄,鼠标移动

    2025年9月7日
    12
  • UCOSII系统时间管理[通俗易懂]

    UCOSII系统时间管理[通俗易懂]一,UCOSII的定时中断绝大多数的内核要求提供定时中断,以实现延时与超时控制等功能。这个定时中断叫做时钟节拍。时钟的中断子程序ISR和时钟节拍函数OSTimeTick()该函数通知UCOSII,发生了时钟节拍中断。二,UCOSII系统时钟函数1,任务延时函数,OSTimeDly(INT16Uticks)实现申请该服务的任务可以延时一段时间这个系统服务的函数叫做OSTimeDly(),这段时间的长短是用时钟节拍的数目来确定的。调用该函数会使µC/OS-Ⅱ进行一次任务调度,并且执行下一个优

    2022年5月4日
    114
  • Django(23)Django限制请求装饰器

    Django(23)Django限制请求装饰器前言有时候,我们想要限制访问的请求方法,比如我们希望用户只能通过get方式请求,post不允许,那么我们可以采用装饰器的方式,django已经为我们提供了内置的装饰器限制请求装饰器Django内

    2022年7月29日
    8
  • Ubuntu下很给力的下载工具

    Ubuntu下很给力的下载工具

    2021年12月9日
    53
  • Node.js excel转json

    Node.js excel转json这个是8月初做的,之前公司项目需要国际化,在项目本地会有两份json数据,一个中文的一个英文的,但是公司产品经理提供的数据是excel格式,需要我们自己转一次。最初几次数据量不大,一次50条左右,我都是手动的添加了几次,后来发现不行,每次这么搞容易出错且比较耗时,就写了这么一个工具,使用起来效率倍增,启动运行一下这个项目,然后粘贴复制即可。其实使用Node.js把excel转成json很简单…

    2022年6月7日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号