import java.util.Arrays;
/**
* The Class Sort.
*/
public class Sort {
/**
* The main method.
*
* @param args
* the args
*/
public static void main(String[] args) {
int[] arrs = new int[] { 121, 32, 14, 125, 638, 119, 230, 469 };
bubbleSort(arrs.clone());
selectSort(arrs.clone());
insertSort(arrs.clone());
shellSort(arrs.clone());
System.out.println("quick sort start: ");
display(arrs);
display(quickSort(arrs.clone(), 0, arrs.length - 1));
System.out.println("quick sort end. ");
System.out.println("java arrays sort: ");
display(arrs);
Arrays.sort(arrs);
display(arrs);
System.out.println("java arrays sort end. ");
}
// 冒泡排序
// O(n^2) M(n^2)
/**
* Sort bubble.
*
* @param arrs
* the arrs
*/
public static void bubbleSort(int[] arrs) {
System.out.println("bubble sort start: ");
display(arrs);
int temp = 0;
for (int i = arrs.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
if (arrs[j] > arrs[j + 1]) {
temp = arrs[j];
arrs[j] = arrs[j + 1];
arrs[j + 1] = temp;
}
}
}
display(arrs);
System.out.println("bubble sort end. ");
}
// 选择排序
// O(n^2) M(n)
/**
* Sort select.
*
* @param arrs
* the arrs
*/
public static void selectSort(int[] arrs) {
System.out.println("select sort start: ");
display(arrs);
int min = 0;
int temp = 0;
for (int i = 0; i < arrs.length - 1; i++) {
min = i;
for (int j = i + 1; j < arrs.length; j++) {
if (arrs[min] > arrs[j]) {
temp = arrs[min];
arrs[min] = arrs[j];
arrs[j] = temp;
}
}
}
display(arrs);
System.out.println("select sort end. ");
}
// 插入排序
// O(n^2) M(n)
/**
* Sort insert.
*
* @param arrs
* the arrs
*/
public static void insertSort(int[] arrs) {
System.out.println("insert sort start: ");
display(arrs);
int temp = 0;
int t = 0;
for (int i = 1; i < arrs.length; i++) {
temp = arrs[i];
t = i;
while (t > 0 && arrs[t - 1] >= temp) {
arrs[t] = arrs[t - 1];
t--;
}
arrs[t] = temp;
}
display(arrs);
System.out.println("insert sort end. ");
}
// 希尔排序
// O(n^3/2) M(n)
/**
* Shell sort.
*
* @param arrs
* the arrs
*/
public static void shellSort(int[] arrs) {
System.out.println("shell sort start: ");
display(arrs);
int h = 0;
while (h <= arrs.length / 3) {
h = h * 3 + 1;
}
int temp = 0;
int outer = 0;
int inner = 0;
while (h > 0) {
for (outer = h; outer < arrs.length; outer++) {
temp = arrs[outer];
inner = outer;
while (inner > h - 1 && arrs[inner - h] >= temp) {
arrs[inner] = arrs[inner - h];
inner -= h;
}
arrs[inner] = temp;
}
h = (h - 1) / 3;
}
display(arrs);
System.out.println("shell sort end. ");
}
// 快速排序
// O(nlogn) M(logn)
/**
* Quick sort.
*
* @param arrs
* the arrs
* @param istart
* the istart
* @param iend
* the iend
*
* @return the int[]
*/
public static int[] quickSort(int[] pData, int left, int right) {
int i = left, j = right;
int middle, strTemp;
middle = pData[(left + right) / 2];
do {
while ((pData[i] < middle) && (i < right)) {
i++;
}
while ((pData[j] > middle) && (j > left)) {
j--;
}
if (i <= j) {
strTemp = pData[i];
pData[i] = pData[j];
pData[j] = strTemp;
i++;
j--;
}
} while (i <= j);
if (left < j) {
quickSort(pData, left, j);
}
if (right > i) {
quickSort(pData, i, right);
}
return pData;
}
/**
* Display.
*
* @param arrs
* the arrs
*/
private static void display(int[] arrs) {
StringBuffer buffer = new StringBuffer("the array is: ");
for (int i : arrs) {
buffer.append(i + ", ");
}
System.out.println(buffer.toString().substring(0, buffer.length() - 2));
}
}
分享到:
相关推荐
插入排序 自己写着玩 防止忘记 传网上吧 可以直接用 不用四处找了
易语言提醒备忘时钟源码,提醒备忘时钟,子程序_读取数据库,子程序_时间数组排序
这是一款非常实用,好看的...程序实现备忘录的添加、删除、查看、修改、启动、关闭等功能,可以设定重复提醒时间,可以选择闹铃提醒和消息提醒两种提醒方式,可以选择时间、优先级等排序显示。UI设计有倒计时显示功能。
用纯C语言编写的事件记录程序(备忘录),包括添加事件,删除事件,查看事件等功能。有不同的排序选项和查看选项。对每一次额度输入都进行了检错。程序的完整性良好
这是一款实现了备忘录的小应用源码,该应用也可以做记事本应用,应用的基本功能包括:新建、修改、删除某条备忘录,可以...每次新建或修改备忘录保存当时时间,按创建或修改备忘录时间排序,这也是一款很简单的源码。
leetcode备忘录系统算法-数据结构 两个不错的排序算法及其 Big-O(完成) 归并排序 快速排序 冒泡排序 基本数据结构实现及其 Big-O 复杂性 哈希图 堆 队列 双端队列双端队列 链表 反转链表 合并两个排序列表 回文...
简易备忘录demo,总共分为三个模块:添加待办事项,个人事项列表以及历史纪录。数据存储在数据库,使用了qq侧滑删除效果,按时间顺序排序,类似于iOS的时间选择器。
该文档为学习基本排序算法过程中的学习笔记,大部分内容从网络上其他渠道也能得到,仅用于记录备忘之用。冒泡、选择、插入三种作为基本的排序算法是必须要掌握的,而在MapReduce的实际应用中。在Map阶段,k-v溢写时...
现在写篇博客备忘~ 数据库版本:MySQL 5.6.42 条件: 某字段代表该数据的状态取值为非负整数,0表示无状态。 需求: 以该字段升序排序,同时需要将值为0的数据放在最后。 首先我们看一下,表的结构: 正常的使用...
经过几年的使用和修改,这个开票功能已经比较完善了。 第一次运行时会创建一个MDB数据库,... 该模块的功能是超级列表框排序。 主程序运行后,会生成1到2个文件,一个是数据库,一个是TXT,用来记录备忘录的临时文本。
经过几年的使用和修改,这个开票功能已经比较完善了。 第一次运行时会创建一个MDB数据库,... 该模块的功能是超级列表框排序。 主程序运行后,会生成1到2个文件,一个是数据库,一个是TXT,用来记录备忘录的临时文本。
1、支持导出导入 2、支持查看详细信息 3、支持复制详细内容 ...8、支持拖动排序 9、支持范围选择和自动选择一行 10、支持java类中所有方法,并支持跳转 11、支持源码跳转 等等 支持一对一服务 价格合适,还支持定做
PriorityQueue 部分排序 各种操作 链表反转: 206. 反转链表 #怎么突然报错了 哦 while(head) 应该是head1 可是 这俩变量不应该一样吗 #不一样! head还剩1 head1是空#怎么突然报错了 # Definition for singly...
按类别或来源过滤、按时间或受欢迎程度排序、暗模式、书签备忘单、添加新备忘单、请求功能以及更多功能,使应用程序令人惊叹! :love-you_gesture: :rocket: 演示 试用应用程序:代码屋 :face_with_monocle: 特征...
C ++备忘录 用C ++实现 树 简单堆易于删除和插入最大值 二进制搜索用于查找数据以升序 堆二进制堆可以插入数据并删除最小数据 二叉搜索树 搜索最小值很容易,并且搜索和删除将采用最差的O(n)计算(当所有节点都...
Eclipse备忘单 Eclipse SDK的可打印备忘单 Eclipse版本 Windows和Linux PDF格式 ODT PDF格式 ODT 4.17 / 4.18 4.14 / 4.15 / 4.16 ...排序文件( cat FILE | sort > SORTED_FILE ) 与最新版本的A
仪表放大器设计的注意事项和小信号处理.....
项目中用到angularjs的表格ng-table,功能相当强大,像搜索、排序、checkbox、分页、每页表格显示数目等都有。API,demo什么的也只能参考官网了。这里做个备忘,哪天肯定还会用到。 HTML: <!DOCTYPE html> <...