`
jiabao523527
  • 浏览: 8048 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_java中的常见算法

 
阅读更多

   ------- 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基础源码.rar

    在“毕向东_Java基础源代码”中,可能会包含常见数据结构(如数组、链表、栈、队列、树等)和基础算法(如排序、搜索)的实现。这些是解决问题和优化程序性能的基础,也是面试中的常见考点。 四、IO流与文件操作 ...

    黑马程序员java面试宝典 完整版PDF.rar

    《黑马程序员Java面试宝典》是一本专门为Java开发者准备的面试指南,包含了广泛而深入的Java技术知识,以及面试过程中可能会遇到的各种问题。这本书的完整版PDF提供了丰富的学习材料,帮助求职者提升自己的技术水平...

    黑马程序员入学Java知识

    ### 黑马程序员入学Java知识 #### Java概述与基础知识 1. **何为编程?** - 编程是通过特定的计算机语言来编写指令,让计算机能够执行一系列任务的过程。 2. **Java语言概述,历史、特点** - Java是一种广泛...

    黑马程序员面试宝典(java)2018版

    《黑马程序员面试宝典(java)2018版》是一本专门为Java开发者准备的面试指南,涵盖了大量在面试过程中可能遇到的问题和知识点。这本宝典由黑马程序员机构精心编纂,汇集了近万名学员的实际面试经验,为求职者提供了...

    Java-集合的例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    本资料包是黑马程序员提供的详细教程,涵盖了Java集合的例题、源码以及配套的PPT教学文档,旨在帮助学习者深入理解和掌握Java集合的使用。 首先,我们来探讨Java集合框架的基本概念。Java集合框架包括接口和实现类...

    黑马程序员入学测试题

    【描述】:这个压缩包包含的是黑马程序员入学时的测试题目,每个考生遇到的题目可能不尽相同,因为它们是从题库中随机抽取的。测试题不仅提供了详细的代码,还有相应的注释,这对于初学者来说是极其宝贵的资源。通过...

    2023黑马面试宝典-Java面试宝典大全-java面试宝典黑马

    10. **算法与数据结构**:虽然不是Java专有,但面试中也会涉及到排序算法(冒泡、快速、归并)、查找算法(二分查找)、树(二叉树、红黑树)等,它们是解决复杂问题的基础工具。 以上这些知识点构成了Java面试的...

    黑马程序员面试宝典(java).7z

    《黑马程序员面试宝典》是针对Java开发人员的一份综合性的面试准备资料,它涵盖了Java全栈开发中的关键知识点,并且特别强调了在面试中可能会遇到的问题和解答。这份资源包含了一份超过500页的企业面试真题集,旨在...

    java程序员必备的面试宝典秘籍.pdf

    Java程序员在面试中需要掌握的知识点广泛而深入,涵盖了核心Java、面向对象设计与UML、XML、SQL、JDBC与Hibernate、Web技术、企业级Java应用如EJB与Spring,以及数据结构、算法和计算机基础知识,甚至有时还会涉及...

    根据《JAVA与设计模式》整理的笔记及示例代码

    Java是一种广泛使用的面向对象的编程语言,而设计模式则是软件工程中解决常见问题的经验总结,是程序员在实践中形成的最佳实践。这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心...

    黑马java面试宝典

    这本书由知名教育机构黑马程序员编撰,旨在帮助读者全面掌握Java核心技术,提高面试成功率。 【描述】:“黑马程序员官网第五版面试宝典”意味着这已是该系列的最新版本,内容经过多次更新和优化,以适应不断变化的...

    毕向东1401

    在文件"黑马程序员_毕向东_Java基础视频教程第14天-02-集合框架(共性方法).avi"中,毕老师可能会详细阐述这些共性方法的使用场景和实现原理,同时通过实例演示如何在实际编程中应用它们。理解并熟练掌握这些共性方法...

    黑马java面试题总结

    在Java中,常见的数据结构有数组、链表、栈、队列、哈希表、树等,而算法则涉及排序、搜索、图论等领域。熟练掌握这些数据结构和算法,能有效提高代码效率,优化解决方案。 再者,多线程是Java的一大特色,面试中...

    2018最新版Java程序员面试宝典+题库

    这本书由"黑马程序员"机构出品,专门针对Java开发者在求职过程中的需求,帮助他们在面试中展现出扎实的技术功底。 1. **Java基础** - 类与对象:深入理解面向对象编程的基本概念,包括封装、继承、多态。 - 数据...

    JavaEE程序员必读图书大推荐

    书中详细介绍了各种常见的设计模式,并结合Java语言进行了具体的应用案例分析。对于希望深入了解面向对象设计的开发者来说,这是一本非常实用的书籍。 - **《SCJP学习指南》** 星级:★★★★☆ 适合对象:初级...

    JAVA核心知识点整理.pdf

    给大家分享一篇我在学习java过程中...包含常见的面试题:JVM、Java集合、多线程并发、java基础、SSM框架原理、微服务、Netty和RPC、网络、日志、算法、数据结构、加密、分布式算法、机器学习、大数据等知识点,都是干货

Global site tag (gtag.js) - Google Analytics