public class Sort {
/**
* 冒泡排序
*
* @param data
*/
static void bubbleSort(int[] data) {
int len = data.length;
for (int i = 0; i < len - 1; i++) {
boolean flag = false;
for (int j = 0; j < len - 1 - i; j++) {
if (data[j] > data[j + 1]) {
int temp = data[j];
data[j] = data[j + 1];
data[j + 1] = temp;
flag = true;
}
}
if (!flag)
break;
}
}
/**
* 选择排序
*
* @param data
*/
public static void selectSort(int[] data) {
for (int i = 0; i < data.length - 1; i++) {
int min = i;
for (int j = i + 1; j < data.length; j++) {
if (data[min] > data[j]) {
min = j;
}
}
if (min != i) {
int b = data[min];
data[min] = data[i];
data[i] = b;
}
}
}
/**
* 快速排序
*
* @param data
* @param low
* @param high
*/
public static void quickSort(int[] data, int low, int high) {
if (low < high) {
int key = data[low]; // 选定的基准值(第一个数值作为基准值)
int temp; // 记录临时中间值
int i = low, j = high;
do {
while ((data[i] < key) && (i < high))
i++;
while ((data[j] > key) && (j > low))
j--;
if (i <= j) {
temp = data[i];
data[i] = data[j];
data[j] = temp;
i++;
j--;
}
} while (i <= j);
if (low < j)
quickSort(data, low, j);
if (high > i)
quickSort(data, i, high);
}
}
private static void pint(int[] data) {
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
int data[] = new int[] { 1, 3, 6, 8, 287, 2, 56, 8 };
pint(data);
quickSort(data, 0, data.length - 1);
pint(data);
}
}
class ArraySort {
// 两个有序数组的合并函数
public static int[] MergeList(int a[], int b[]) {
int result[];
if (checkSort(a) && checkSort(b)) // 检查传入的数组是否是有序的
{
result = new int[a.length + b.length];
int i = 0, j = 0, k = 0; // i:用于标示a数组 j:用来标示b数组 k:用来标示传入的数组
while (i < a.length && j < b.length)
if (a[i] <= b[j]) {
result[k++] = a[i++];
} else {
result[k++] = b[j++];
}
/* 后面连个while循环是用来保证两个数组比较完之后剩下的一个数组里的元素能顺利传入 */
while (i < a.length)
result[k++] = a[i++];
while (j < b.length)
result[k++] = b[j++];
return result;
} else {
System.out.print("非有序数组,不可排序!");
return null;
}
}
// 检查数组是否是顺序存储的
public static boolean checkSort(int a[]) {
boolean change = true; // 这个标志位是一种优化程序的方法,可以看看我写的冒泡排序优化就会明白了
for (int i = 0; i < a.length - 1 && change; i++) {
for (int j = i + 1; j < a.length; j++)
if (a[j - 1] > a[j])
return false;
else
change = false;
}
return true;
}
// 打印函数
public static void print(int b[]) {
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
}
public static void main(String args[]) {
int a[] = { 1, 2, 2, 3, 5, 6, 7, 7 };
int b[] = { 1, 2, 4, 5, 8, 8, 9, 10, 11, 12, 12, 13, 14 };
int c[] = MergeList(a, b);
if (c != null)
print(c);
else
System.out.println("");
}
}
分享到:
相关推荐
### Java考试复习资料详解 #### 一、架构模式:B/S与C/S - **B/S架构**(Browser/Server,浏览器/服务器)是一种通过Web浏览器进行访问的应用系统架构。客户端只需要一个Web浏览器即可,无需安装任何软件。所有的...
Java面试复习资料涵盖了众多核心知识点,对于准备Java面试的求职者来说是不可或缺的参考资料。以下是一些关键点的详细解析: 1. **面向对象**:Java是一种面向对象的语言,其三大特性是封装、继承和多态。面试中常...
### Java考试复习内容 #### Java概述 - **JavaSE与JavaEE的区别:** - JavaSE(Java Standard Edition):标准版Java,适用于桌面应用程序开发。 - JavaEE(Java Enterprise Edition):企业版Java,主要面向Web...
11. **算法与数据结构**:虽然不是Java专有,但面试中常会考察,例如排序算法、查找算法、栈、队列等。 12. **Java 200套面试题**:这个部分可能是各种面试题目合集,涵盖以上所有知识点,通过练习可以检验自己的...
"java复习.zip"这个压缩包包含了一份全面的Java复习资源,涵盖了Java基础知识、面试笔试题、逻辑题以及各大公司的Java题目,还特别提到了SSH框架,即Struts、Spring和Hibernate这三个流行框架的综合应用。...
### Java基础复习笔记11基本排序算法 #### 内容概览 本文档主要介绍了Java中的几种基本排序算法,包括冒泡排序、快速排序、选择排序、堆排序等,并通过具体的代码实例对每种排序算法进行了详细的解释。文档旨在...
Java基础复习day03数组 Java数组是一种数据类型,引用类型,用于存放一组数据的数据结构。数组的定义、创建、访问、长度属性、遍历、常用Arrays类、二维数组、方法递归调用经典案例、变量源码教程等。 一、数组的...
这份"Java期末复习资料"无疑为准备Java考试的学生提供了宝贵的资源。它涵盖了选择题、填空题、程序阅读以及编程题,旨在帮助学生全面理解Java的核心概念和技术。 1. **选择题**:这部分通常测试对Java基础知识的...
【Java期末考试复习知识点】 1. 计算与比较班级平均成绩和方差 在这个编程题中,我们看到了如何计算两个班级的平均成绩和方差。平均成绩的计算是通过对所有分数求和后除以分数的数量。方差则是通过计算每个分数与...
标题:“Java排序 折半法” 描述:这是一个非常好的排序示例,通过折半插入排序算法对数组进行排序,代码简洁明了,非常适合Java初学者学习理解。 知识点详解: ### 1. 折半插入排序(Binary Insertion Sort) ...
Java面试复习大纲涵盖多个层面的知识点,针对不同的技术背景和工作经验要求,提供了详尽的复习指南。以下是对这些知识点的详细解读: Java基础部分: 1. 排序算法:在Java中,常见的排序算法包括冒泡排序、选择排序...
【Java基础复习笔记10数据结构-排序二叉树】 排序二叉树是一种特殊类型的二叉树,其每个节点的数据值满足以下特性:对于任意节点,其左子树中的所有节点值都小于该节点,而右子树中的所有节点值都大于或等于该节点...
根据提供的信息,我们可以总结出以下相关的Java知识点: ### 1. Java 编译后的字节码文件扩展名 - **知识点**: Java 源代码文件经过编译后生成的文件扩展名为 `.class`。 - **解释**: 在Java编程语言中,源代码...
在IT行业中,算法是开发者的核心竞争力之一,特别是对于Java开发者来说,掌握各种排序算法是非常基础且重要的技能。本文将深入探讨几种经典的排序算法,并通过Java实现来加深理解。 首先介绍的是插入排序。插入排序...
Java编程语言复习重点整理 1. **访问修饰符的区别**: - `public`:所有类都可以访问。 - `private`:仅限于在同一类内部访问。 - `protected`:同一包内的类和任何子类可以访问。 - 默认(friendly):同一包...