`
learen
  • 浏览: 11156 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员 自己写了个DataSorter类

 
阅读更多

    ------- android培训java培训、期待与您交流! ----------

 

    自己写了一个DataSorter类,对数组进行排序,虽然在实际开发中没什么用,但十分锻炼思维。供大家参考一下。

public class DataSorter {
	public static void main(String[] args) {
		int[] arr = {8,7,6,5,4,3,2,1};
		shellSort(arr);
		print(arr);
	}
	public static void bubbleSort(int[] arr) {  
		for(int i = 0; i < arr.length - 1; i++) {  
			for(int j = 0; j < arr.length - 1 - i; j++) {  
				if(arr[j] > arr[j + 1]) {  
					arr[j] = arr[j] ^ arr[j + 1];
					arr[j + 1] = arr[j] ^ arr[j + 1];
					arr[j] = arr[j] ^ arr[j + 1];
				}
			}
		}
	}

	public static void selectionSort(int[] arr) {
		int tmp;
		for(int i = 0; i < arr.length - 1; i++) {  
			tmp = i;
			for(int j = i + 1; j < arr.length; j++) 
				if(arr[tmp] > arr[j])
					tmp = j;
			if(tmp != i){
				arr[i] = arr[i] ^ arr[tmp];
				arr[tmp] = arr[i] ^ arr[tmp];
				arr[i] = arr[i] ^ arr[tmp];
			}
		}
	}

	public static void insertionSort(int[] arr) {
		int tmp;  
		for(int i = 0; i < arr.length - 1; i++) {
			tmp = arr[i+1];
			for(int j = i; j >= 0; j--){
				if(arr[j] > tmp)
					arr[j + 1] = arr[j];
				else{
					arr[j + 1] = tmp;
					break;
				}
			}
		}
	}

	public static void shellSort(int[] arr) {
		for (int group = arr.length / 2; group > 0; group /= 2){
			for (int i = group; i < arr.length; i++){
				for (int j = i - group; j >= 0; j -= group){
					if (arr[j] > arr[j + group]){
						arr[j] = arr[j] ^ arr[j + group];
						arr[j + group] = arr[j] ^ arr[j + group];
						arr[j] = arr[j] ^ arr[j + group];
					}
				}
			}
		}
	}

	public static void quickSort(int[] arr){
		quickSort(arr,0,arr.length - 1);
	}

	public static void quickSort(int[] arr,int start,int stop) {
		int tmp = arr[start],i = start,j = stop;
		while(i < j){
			if(arr[i + 1] > tmp){
				while(i < j){
					if(arr[j] < tmp){
						arr[i] = arr[j];
						break;
					}
					else
						j--;
				}
				if(i < j){
					i++;
					arr[j] = arr[i];
					j--;
				}
			}else{
				arr[i] = arr[i + 1];
				i++;
			}  
		}
		if(i > start) arr[i] = tmp;
		if(i > start + 1) quickSort(arr,start,i - 1);
		if(i < stop - 1) quickSort(arr,i + 1,stop);
	}

	public static void print(int[] arr) {
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();  
	}
  
}

 

分享到:
评论

相关推荐

    黑马程序员Javase笔记

    "黑马程序员Javase笔记"是一个自学者在学习黑马程序员提供的Java全套课程过程中整理的笔记,主要涵盖了Java Standard Edition (Javase) 的核心内容。下面将详细讨论其中的关键知识点。 首先,DOS命令是操作系统中的...

    C++黑马程序员学习资料

    C++黑马程序员学习资料,附赠《InterviewGuide第四版By阿秀》、《LeetCode刷题手册》、《背包问题九讲》、《算法图解》pdf版本,三个基础课程文档手册及三个实验项目,由简到繁分别为《通讯录管理系统》、《职工管理...

    黑马程序员测试题部分答案

    【标题】:“黑马程序员测试题部分答案”涵盖了在学习编程过程中可能会遇到的各类测试题目及其解答,主要由“黑马程序员”这个知名的IT教育机构的教学资源衍生而来。这些测试题目的答案,旨在帮助学习者检验自己的...

    教材源码_javaweb_黑马程序员Javaweb源码_

    黑马程序员的Javaweb源码集是一个丰富的学习资源,包含实际项目案例和练习,覆盖了Web开发的基础到进阶内容。通过阅读和分析这些源码,学习者可以更好地理解Web开发流程,学习如何组织代码结构,以及掌握常见的设计...

    黑马程序员 C语言提高课程配套课件

    黑马程序员 C语言提高课程配套课件 黑马程序员 C语言提高课程配套课件

    黑马程序员——Android移动开发源码

    黑马程序员——Android移动开发源码

    黑马程序员 大事件案例程序

    layui ajax 没有node.js功能都可用,高度类似。 黑马刘龙彬老师主讲的大事件项目,整体看完,给...最后,再次给黑马程序员和刘老师点个赞。 说明--ShowDoc https://www.showdoc.com.cn/escook?page_id=3707158761215217

    黑马程序员,C++核心编程

    黑马程序员,C++核心编程

    传智播客旗下黑马程序员c++视频课程内部讲义

    传智播客旗下黑马程序员c++视频课程内部讲义 就是上课时老师翻阅的那个讲义

    黑马程序员ssm代码分享

    内容概要:通过带着读者手写简化版 Spring 框架了解 Spring 核心原理。在手写Spring源码的过程中会摘取整体框架中的核心逻辑,简化代码实现过程保留核心功能, ...本代码基于黑马程序员的课程,最好根据课程同步学习

    黑马程序员Vue深入浅出视频代码

    这是根据黑马程序员中关于Vue11天课程中,跟着视频编写的代码,一行行跟着写出来的,连备注基本也是和视频一样,用的是vscode开发工具,上传的资料已经把node_modules删除了,进入目录后,用cnpm i重新安装一下就...

    B站黑马程序员Python教程学习笔记.zip

    在B站黑马程序员的Python教程中,你将深入理解Python的基础概念,包括: 1. **变量与数据类型**:Python支持多种数据类型,如整型(int)、浮点型(float)、字符串(str)和布尔型(bool)。此外,还有列表(list...

    黑马程序员JAVA WEB全笔记pdf

    本笔记基于黑马程序员的课程内容,全面覆盖了Java Web的基础知识,包括前端开发技术如HTML、CSS、JavaScript,以及后端服务器端的Java Servlet和JSP(Java Server Pages)。 一、前端基础 1. ...

    黑马程序员毕业设计资料,代码,数据库设计论文等

    "黑马程序员毕业设计资料,代码,数据库设计论文等" 这个标题表明这是一份来自“黑马程序员”教育平台的资源集合,主要用于帮助学生进行毕业设计。其中包含了项目代码、数据库设计相关的论文等内容,适用于计算机科学...

    黑马程序员JavaEE49期

    黑马程序员JavaEE49期

    Netty基础,用于学习Netty,参考黑马程序员的netty教程

    Netty基础,用于学习Netty,参考黑马程序员的netty教程

    Java Web程序设计任务教程源码(黑马程序员)

    8. **项目实战**:“黑马程序员”提供的源码是实战项目的实例,涵盖了上述所有技术点,读者可以跟随源码逐步理解并实现每个功能模块,从而提升实际开发能力。 总之,《Java Web程序设计任务教程》通过丰富的实例和...

    黑马程序员入学考试题

    黑马程序员入学考试题,共10道,资源中有代码和题目。

    黑马程序员SSM整合学习项目demo

    这个“黑马程序员SSM整合学习项目demo”是一个实践性的学习资源,通过它,你可以深入了解SSM框架的整合过程,提升Java Web开发能力。在实际项目中,SSM框架的整合可以大大提高开发效率,同时提供良好的可维护性和...

Global site tag (gtag.js) - Google Analytics