程序员必知的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实现) .

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 红黑树和平衡二叉树有什么区别?「建议收藏」

    红黑树和平衡二叉树有什么区别?「建议收藏」什么是二叉树?二叉树(BinaryTree)是指每个节点最多只有两个分支的树结构,即不存在分支大于2的节点,二叉树的数据结构如下图所示这是一棵拥有6个节点深度为2(深度从0开始),并且根节点为3的二叉树二叉树有两个分支通常被称作“左子树”和“右子树”,而且这些分支具有左右次序不能随意地颠倒一棵空树或者满足以下性质的二叉树被称之为二叉查找树若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不为空,则右子树上所有节点的值均大

  • 零基础学习JAVA其实并不难!不相信?进来看看你就知道了

    零基础学习JAVA其实并不难!不相信?进来看看你就知道了其实Java并没有想象中的那么难,首先想要入这个行,要做好一个心理准备,那就是你想走远点,就得不间断的去学习,去汲取知识,前期不能怕辛苦,不要闲下来就打LOL、吃鸡、王者农药,有空就得多看看各种开源项目的代码,API的设计方式,各大网站的设计架构,理解各个环节的作用。补齐自己的知识视野。  当然这个行业也并不是什么门槛都没有,不要再私信我初中生、高中生、中专生能不能学习Java了。反正我个人是认为不可行的,或许你可以去问问其他大神?或许他们会觉得可以的。  下图是我更新过的自学表,分别分为4个阶段。按

  • webgame开发中的文件加密

    webgame开发中的文件加密一般的webgame中都会对资源、消息进行加密,这里只是简单记录一下对文件的加密过程。上图为实际项目中所使用的加密工具(较为简单的一个air项目)输入加密key+需要加密的文件–>加密–>将加密后的文件保存至另一目录(后缀名视自己的项目的规则进行修改)实现步骤:1、读取文件(flash.filesystem.File),获取文件流(…

  • Akka FSM 源代码分析

    Akka FSM 源代码分析

  • Android浏览器插件开发[通俗易懂]

    Android浏览器插件开发[通俗易懂]最近做android浏览器插件学到一些东西和大家分享:需要了解的有以下几个方面的知识:1.插件是什么2.android浏览器怎样加载插件和创建实例3浏览器插件和脚本语言的交互4插件内部的数据流一浏览器插件介绍:  1.1概述浏览插件本质是一个功能模块,是浏览器功能的一种扩充。其载体是dll或则so文件。它依附浏览器完成某一特定的功能。插件需要实现浏览器规定的一些函数这些函数叫着NPAPI.正是插件实现了这些函数才可以和浏览器交互。同时浏览器也为插件提供一些函数。在android平台下还有一些专有的函数

  • java–ACMer入门指南

    java–ACMer入门指南

发表回复

您的电子邮箱地址不会被公开。

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