------- android培训、java培训、期待与您交流! ----------
本人最近收集整理的一些排序算法,希望对大家有所帮助!
1、选择排序(Selection sort)、插入排序(Insertion sort)与气泡排序(Bubble sort)这三个排序方式是初学排序所必须知道的三个基本排序方式,它们由于速度不快而不实用。
public class BasicSort {
public static void selectionSort(int[] number) {
for (int i = 0; i < number.length - 1; i++) {
int m = i;
for (int j = i + 1; j < number.length; j++)
if (number[j] < number[m])
m = j;
if (i != m)
swap(number, i, m);
}
}
public static void injectionSort(int[] number) {
for (int j = 1; j < number.length; j++) {
int tmp = number[j];
int i = j - 1;
while (tmp < number[i]) {
number[i + 1] = number[i];
i--;
if (i == -1)
break;
}
number[i + 1] = tmp;
}
}
public static void bubbleSort(int[] number) {
boolean flag = true;
for (int i = 0; i < number.length - 1 && flag; i++) {
flag = false;
for (int j = 0; j < number.length - i - 1; j++) {
if (number[j + 1] < number[j]) {
swap(number, j + 1, j);
flag = true;
}
}
}
}
private static void swap(int[] number, int i, int j) {
int t;
t = number[i];
number[i] = number[j];
number[j] = t;
}
}
2、合并排序法
合并排序法基本是将两笔已排序的资料合并并进行排序,如果所读入的资料尚未排序,可以先利用其它的排序方式来处理这两笔资料,然后再将排序好的这两笔资料合并。
public class MergeSort {
public static int[] sort(int[] number1, int[] number2) {
int[] number3 = new int[number1.length + number2.length];
int i = 0, j = 0, k = 0;
while (i < number1.length && j < number2.length) {
if (number1[i] <= number2[j])
number3[k++] = number1[i++];
else
number3[k++] = number2[j++];
}
while (i < number1.length)
number3[k++] = number1[i++];
while (j < number2.length)
number3[k++] = number2[j++];
return number3;
}
}
3、基数排序法
基数排序法又称“桶子法”(bucket sort)它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,在某些时候,基数排序法的效率高于其它的比较性排序法。
public class RadixSort {
public static void sort(int[] number, int d) {
int k = 0;
int n = 1;
int[][] temp = new int[number.length][number.length];
int[] order = new int[number.length];
while (n <= d) {
for (int i = 0; i < number.length; i++) {
int lsd = ((number[i] / n) % 10);
temp[lsd][order[lsd]] = number[i];
order[lsd]++;
}
for (int i = 0; i < number.length; i++) {
if (order[i] != 0)
for (int j = 0; j < order[i]; j++) {
number[k] = temp[i][j];
k++;
}
order[i] = 0;
}
n *= 10;
k = 0;
}
}
public static void main(String[] args) {
int[] data = { 73, 22, 93, 43, 55, 14, 28, 65, 39, 81, 33, 100 };
RadixSort.sort(data, 100);
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
}
}
不足之处希望指正!
- 大小: 18.5 KB
分享到:
相关推荐
在“毕向东_Java基础源代码”中,可能会包含常见数据结构(如数组、链表、栈、队列、树等)和基础算法(如排序、搜索)的实现。这些是解决问题和优化程序性能的基础,也是面试中的常见考点。 四、IO流与文件操作 ...
《黑马程序员Java面试宝典》是一本专门为Java开发者准备的面试指南,包含了广泛而深入的Java技术知识,以及面试过程中可能会遇到的各种问题。这本书的完整版PDF提供了丰富的学习材料,帮助求职者提升自己的技术水平...
### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...
《黑马程序员面试宝典(java)2018版》是一本专门为Java开发者准备的面试指南,涵盖了大量在面试过程中可能遇到的问题和知识点。这本宝典由黑马程序员机构精心编纂,汇集了近万名学员的实际面试经验,为求职者提供了...
本资料包是黑马程序员提供的详细教程,涵盖了Java集合的例题、源码以及配套的PPT教学文档,旨在帮助学习者深入理解和掌握Java集合的使用。 首先,我们来探讨Java集合框架的基本概念。Java集合框架包括接口和实现类...
【描述】:这个压缩包包含的是黑马程序员入学时的测试题目,每个考生遇到的题目可能不尽相同,因为它们是从题库中随机抽取的。测试题不仅提供了详细的代码,还有相应的注释,这对于初学者来说是极其宝贵的资源。通过...
10. **算法与数据结构**:虽然不是Java专有,但面试中也会涉及到排序算法(冒泡、快速、归并)、查找算法(二分查找)、树(二叉树、红黑树)等,它们是解决复杂问题的基础工具。 以上这些知识点构成了Java面试的...
《黑马程序员面试宝典》是针对Java开发人员的一份综合性的面试准备资料,它涵盖了Java全栈开发中的关键知识点,并且特别强调了在面试中可能会遇到的问题和解答。这份资源包含了一份超过500页的企业面试真题集,旨在...
Java程序员在面试中需要掌握的知识点广泛而深入,涵盖了核心Java、面向对象设计与UML、XML、SQL、JDBC与Hibernate、Web技术、企业级Java应用如EJB与Spring,以及数据结构、算法和计算机基础知识,甚至有时还会涉及...
Java是一种广泛使用的面向对象的编程语言,而设计模式则是软件工程中解决常见问题的经验总结,是程序员在实践中形成的最佳实践。这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心...
这本书由知名教育机构黑马程序员编撰,旨在帮助读者全面掌握Java核心技术,提高面试成功率。 【描述】:“黑马程序员官网第五版面试宝典”意味着这已是该系列的最新版本,内容经过多次更新和优化,以适应不断变化的...
在文件"黑马程序员_毕向东_Java基础视频教程第14天-02-集合框架(共性方法).avi"中,毕老师可能会详细阐述这些共性方法的使用场景和实现原理,同时通过实例演示如何在实际编程中应用它们。理解并熟练掌握这些共性方法...
在Java中,常见的数据结构有数组、链表、栈、队列、哈希表、树等,而算法则涉及排序、搜索、图论等领域。熟练掌握这些数据结构和算法,能有效提高代码效率,优化解决方案。 再者,多线程是Java的一大特色,面试中...
这本书由"黑马程序员"机构出品,专门针对Java开发者在求职过程中的需求,帮助他们在面试中展现出扎实的技术功底。 1. **Java基础** - 类与对象:深入理解面向对象编程的基本概念,包括封装、继承、多态。 - 数据...
书中详细介绍了各种常见的设计模式,并结合Java语言进行了具体的应用案例分析。对于希望深入了解面向对象设计的开发者来说,这是一本非常实用的书籍。 - **《SCJP学习指南》** 星级:★★★★☆ 适合对象:初级...
给大家分享一篇我在学习java过程中...包含常见的面试题:JVM、Java集合、多线程并发、java基础、SSM框架原理、微服务、Netty和RPC、网络、日志、算法、数据结构、加密、分布式算法、机器学习、大数据等知识点,都是干货