java7代码示例_Java中的七种排序方式代码示例

packagebaseJava;/*** @title SortMethods.java

*@authorDonsenChen

* @Date 2018年5月2日 上午10:16:03

* @Description*/

public classSortMethods {public static voidmain(String[] args) {int[] arr = { 3, 7, 9, 1, 4, 8, 2, 6, 5};

binarySort(arr);

bubbleSort(arr);

quickSort(arr,0, 0);

selectSort(arr);

insertSort(arr);

shellSort(arr);

mergeSort(arr,0, 0);

}//1. 二分法排序

public static void binarySort(int[] numbers) {inti, j, temp;intlow, hight, mid;for (i = 1; i < numbers.length; i++) {

temp=numbers[i];

low= 0;

hight= i - 1;while (low <=hight) {

mid= (low + hight) / 2;if (numbers[mid] >temp)

hight= mid - 1;elselow= mid + 1;

}for (j = i - 1; j > hight; j--)

numbers[j+ 1] =numbers[j];

numbers[hight+ 1] =temp;

}

System.out.print("二分法排序:");

printArr(numbers);

System.out.println();

}//2. 冒泡排序

public static void bubbleSort(int[] numbers) {int temp; //记录临时中间值

int size = numbers.length; //数组大小

for (int i = 0; i < size - 1; i++) {for (int j = i + 1; j < size; j++) {if (numbers[i] > numbers[j]) { //交换两数的位置(ps:这里的大于号小于号决定数组排序的升序或降序)

temp =numbers[i];

numbers[i]=numbers[j];

numbers[j]=temp;

}

}

}

System.out.print("冒泡排序:");

printArr(numbers);

System.out.println();

}//3. 快速排序

public static void quickSort(int[] numbers, int start, intend) {if (start

int temp; //记录临时中间值

int i = start, j =end;do{while ((numbers[i] < base) && (i

i++;while ((numbers[j] > base) && (j >start))

j--;if (i <=j) {

temp=numbers[i];

numbers[i]=numbers[j];

numbers[j]=temp;

i++;

j--;

}

}while (i <=j);if (start

quickSort(numbers, start, j);if (end >i)

quickSort(numbers, i, end);

}

System.out.print("快速排序:");

printArr(numbers);

System.out.println();

}//4. 选择排序

public static void selectSort(int[] numbers) {int size =numbers.length, temp;for (int i = 0; i < size; i++) {int k =i;for (int j = size - 1; j > i; j--) {if (numbers[j]

k=j;

}

temp=numbers[i];

numbers[i]=numbers[k];

numbers[k]=temp;

}

System.out.print("选择排序:");

printArr(numbers);

System.out.println();

}//5. 插入排序

public static void insertSort(int[] numbers) {int size =numbers.length, temp, j;for (int i = 1; i < size; i++) {

temp=numbers[i];for (j = i; j > 0 && temp < numbers[j - 1]; j--)

numbers[j]= numbers[j - 1];

numbers[j]=temp;

}

System.out.print("插入排序:");

printArr(numbers);

System.out.println();

}//6. 希尔排序

public static void shellSort(int[] numbers) {int n =numbers.length;//进行分组,最开始的增量(gap)为数组长度的一半

for (int gap = n / 2; gap > 0; gap /= 2) {//对各个分组进行插入排序

for (int i = gap; i < n; i++) {//将art[i]插入到所在分组的正确位置上

insertI(numbers, gap, i);

}

}

System.out.print("希尔排序:");

printArr(numbers);

System.out.println();

}//希尔排序插入方法//将art[i]插入到所在分组的正确位置上

private static void insertI(int[] arr, int gap, inti) {int inserted =arr[i];intj;for (j = i - gap; j >= 0 && inserted < arr[j]; j -=gap) {

arr[j+ gap] =arr[j];

}

arr[j+ gap] =inserted;

}//7. 归并排序

public static void mergeSort(int[] numbers, int left, intright) {int t = 1;//每组元素个数

int size = right - left + 1;while (t

t = 2 *s;int i =left;while (i + (t - 1)

merge(numbers, i, i+ (s - 1), i + (t - 1));

i+=t;

}if (i + (s - 1)

merge(numbers, i, i+ (s - 1), right);

}

System.out.print("归并排序:");

printArr(numbers);

System.out.println();

}//归并算法实现

private static void merge(int[] data, int p, int q, intr) {int[] B = new int[data.length];int s =p;int t = q + 1;int k =p;while (s <= q && t <=r) {if (data[s] <=data[t]) {

B[k]=data[s];

s++;

}else{

B[k]=data[t];

t++;

}

k++;

}if (s == q + 1)

B[k++] = data[t++];elseB[k++] = data[s++];for (int i = p; i <= r; i++)

data[i]=B[i];

}//打印数组

private static void printArr(int[] arr) {

System.out.print("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {

System.out.print(arr[i]+ "]");

}else{

System.out.print(arr[i]+ ", ");

}

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx配置多个server_Nginx基本属性配置详解

. Nginx服务的基本配置1.1 用于调试进程和定位问题的配置项是否以守护进程的方式运行nginx# 默认ondaemon on|off;是否以master/worker方式工作# 默认on&#xff0c;指定了是否以master-worker进程的方式运行&#xff0c;如果设置为off&#xff0c;那么所有的请求将只会由maste…

android-DNS服务找不到

1、重启eclipse 2、重新建立AVD 3、在建立AVD时sd卡数值不要填转载于:https://www.cnblogs.com/shouhutian/p/6838327.html

数据增长率怎么算_20年老股民告诉你5个数据可轻松算出股价是否高估

自从开通自媒体以来&#xff0c;有很多朋友问我该如何正确判断股票的合理价格呢&#xff1f;说得太专业&#xff0c;可能很多新入市的股民朋友看不懂。那有没有一种估值方法通俗易懂呢&#xff1f;说实话&#xff0c;真有点为难我了。我首先想到了最简单的PE估值法&#xff0c;…

与Selenium的集成测试

总览 我已经使用了一段时间&#xff0c;并且遇到了一些似乎可以使生活更轻松的事情。 我以为可以将其作为教程分享&#xff0c;所以我将向您介绍这些部分&#xff1a; 使用Maven设置Web项目&#xff0c;配置Selenium以在CI上作为集成测试运行 研究使用“页面对象”为网站中的…

MFC程序打开文件对话框出错的问题解决

前几天从网上下了个图像分析的mfc小程序&#xff0c;是VC6的 用VC6在本地编译生成都没问题。执行起来弹出一个未处理的错误&#xff0c;程序崩溃退出。 想起来原来遇到过打开文件对话框方面的问题&#xff0c;当时项目时间紧张未能深究。 这次要好好看下这个问题。 详细做法就是…

ad 单点登录 java 访问权限_AD 单点登录以及windows认证详细说明

上篇博客我谈到了一些关于ASP.NET Forms身份认证方面的话题&#xff0c;这次的博客将主要介绍ASP.NET Windows身份认证。Forms身份认证虽然使用广泛&#xff0c;不过&#xff0c;如果是在 Windows Active Directory 的环境中使用ASP.NET&#xff0c; 那么使用Windows身份认证也…

index加载显示servlet数据_[WEB篇]-JavaWeb基础与应用-02-Servlet开发

JavaWeb基础与应用2.Servlet开发Servlet是sun公司提供的一门用于开发动态web资源的技术。Sun公司在其API中提供了一个servlet接口&#xff0c;用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据)&#xff0c;需要完成以下2个步骤&#xff1a;编写一个Java类&…

Linux命令之stty

用途说明 stty命令用于显示和修改终端行设置&#xff08;change and print terminal line settings&#xff09;。 常用参数 stty命令不带参数可以打印终端行设置&#xff0c;加上-a参数可以打印得更详细些。 stty size可以显示终端的大小&#xff0c;即行数和列数。 stty命令还…

本机速度文件支持的“纯” Java大数据存储

动机 所有这一切始于意识到我买不起足够大的计算机。 音频处理需要大量的内存。 Audacity是一款出色的免费音频处理器&#xff0c;它使用文件支持的存储系统对其进行管理。 这是解决此类问题的常用方法&#xff0c;在这些问题中&#xff0c;我们存储了大量信息&#xff0c;并希…

element ui后台html_GitHub上10个开源且优秀的后台管理系统UI面板

作者&#xff1a;SevDotwww.jianshu.com/p/3bc7404af887Web 开发中几乎的平台都需要一个后台管理&#xff0c;但是从零开发一套后台控制面板并不容易&#xff0c;幸运的是有很多开源免费的后台控制面板可以给开发者使用&#xff0c;那么有哪些优秀的开源免费的控制面板呢&#…

mysql 唯一记录_mysql选择唯一记录

我有以下查询&#xff1a;select * from members,subscriptionswhere members.MemberID subscriptions.MemberIDand subscriptions.Year 2009and members.ASSCID 15and subscriptions.Untildate between $2009-01-01 and 2009-12-31order by members.Memberlastname会员支付…

JAVA第七次作业

《Java技术》第七次作业 &#xff08;一&#xff09;学习总结 1.写出事件处理模型中的几个关键词&#xff0c;并通过具体代码实例说明你对事件处理模型的理解。 WindowListener&#xff1a;窗体事件&#xff0c;专门处理窗体的事件监听口&#xff0c;窗体的所有变化都可以使用此…

java时间格式转js_使用jquery或java脚本将日期时间转换为rfc3339格式

您的要求似乎微不足道&#xff0c;还有更多吗&#xff1f;这是显而易见的答案&#xff1a;function formatTimestring(s) {var b s.split(/[\\/:]/);return b[2] b[1] b[0] \T\ b[3] b[4] \00\ \Z\}alert(formatTimestring(\08/09/2010:12:00\) //20100908T120000Z);如…

输出以下图案菱形7行_春夏格子图案超流行,三木的一款格子连衣裙,带来田园少女风...

春夏搭配中&#xff0c;增添了华丽格子图案搭配&#xff0c;从经典的格子裙子&#xff0c;到衬衫裙等。根据搭配不同而成为不同风格。所以&#xff0c;这一次&#xff0c;重点介绍格子裙和长衬衫的几种种搭配。格子裙子的春夏搭配推荐LOOK&#xff1a;1 [格子褶皱裙子棕色T恤]的…

asp.net FileUpload上传文件夹并检测所有子文件

1.在FileUpload控件添加一个属性 webkitdirectory""就可以上传文件夹了 <asp:FileUpload ID"FileUpload1" runat"server" webkitdirectory"" />2.检测文件夹下所有子文件 string DirectoryName FileUpload1.PostedFile.FileNam…

使用Project Jigsaw的JDK 9 Early Access上的Eclipse IDE

几周前&#xff0c;我写了关于在Java 9上运行Eclipse Neon的文章 &#xff08;尽管&#xff0c;我在帖子标题中错误地和令人尴尬地留下了“火星”&#xff09;。 值得注意的是&#xff0c;我列出的步骤也适用于带有Project Jigsaw &#xff08;Java模块化&#xff09;构建的JDK…

火狐配置java_java selenium+firefox环境搭建

已经成功搭建的版本关系&#xff1a;FireFox45selenium3.141.59 geckodriver 0.21.0启动浏览器后空白页&#xff1a;浏览器版本太高Firefox历史版本geckodriver驱动版本https://github.com/mozilla/geckodriver/releasesselenium maven地址org.seleniumhq.seleniumselenium-ja…

arduino蜂鸣器_板卡推荐BPIUNO32 arduino 开发板,支持webduino与arduino应用

BPI:UNO32(也称为BPI-UNO32&#xff0c;被称为BPI UNO32)是一个带有Xtensa 32位LX6的单/双核心处理器的嵌入式系统的ESP32。支持Webduino和arduino的功能。BPI-UNO32使用的是esp-WROOM32&#xff0c;MCU。ESP32是一种集成2.4 GHz Wi-Fi和蓝牙双模式的单芯片解决方案。该公司的4…

Perl sendmail

introduction of sendmailexamplesend mail to multi-receiver转载于:https://www.cnblogs.com/david-wei0810/p/6846515.html

java 7.0 特性_JDK7.0语法新特性

JDK7.0语法新特性1&#xff0c;菱形语法(泛型实例化类型自动推断)List list new ArrayList<>(); // <>这个真的很像菱形2&#xff0c;在目前版本中&#xff0c;不可具体化的泛型(任意类型)可变参数&#xff0c;在编译时&#xff0c;会在调用处产生警告&#xff0c…