算法java语言描述_java语言描述数据结构与算法崔笑颜的博客

java语言描述数据结构与算法崔笑颜的博客

冒泡排序 插入排序 选择排序 希尔排序 快速排序 归并排序 二分查找package com.demo.test;

import java.util.Arrays;

import java.util.Scanner;

public class TestDemo{

public static void main(String[] args) {

//随机输入n个数,存放在数组a中

Scanner scanner=new Scanner(System.in);

int n=scanner.nextInt();

int a[]=new int[n];

//这是第一种输入方法

/*for (int i=0;in;i++) {

a[i]=scanner.nextInt();

}*/

//这是第二种输入方法

int k=0;

while(true) {

if(kn) {

a[k]=scanner.nextInt();

k++;

}else {

break;

}

}

int[] b=choicSort(a);

for (int j=0;jb.length;j++) {

System.out.print(b[j]+ );

}

}

//冒泡排序

private static int[] bubbleSort(int[] array) {

for (int i=1;iarray.length;i++) {

for (int j=0;jarray.length-i;j++) {

if (array[j]array[j+1]) {

int temp=array[j];

array[j]=array[j+1];

array[j+1]=temp;

}

}

}

return array;

}

//插入排序

private static int[] insertSort(int[] array) {

for (int i=1;iarray.length;i++) {

int j=i;

int temp=array[i];

while (j0array[j-1]temp) {

array[j]=array[j-1];

j--;

}

array[j]=temp;

}

return array;

}

//选择排序

private static int[] choicSort(int[] array) {

for (int i=0;iarray.length-1;i++) {

int min=i;

for (int j=i+1;jarray.length;j++) {

if (array[j]array[min]) {

min=j;

}

}

if (min!=i) {

int temp=array[i];

array[i]=array[min];

array[min]=temp;

}

}

return array;

}

//希尔排序

private static int[] shellSort(int[] array) {

int step=(array.length-1)/2;

while (step0) {

for (int i=step;iarray.length;i++) {

int j=i;

int temp=array[i];

while(j(step-1)array[j-step]=temp) {

array[j]=array[j-step];

j=j-step;

}

array[j]=temp;

}

step=step/2;

}

return array;

}

//快速排序

private static void quickSort(int[] array) {

reQuickSort(array,0,array.length-1);

}

private static void reQuickSort(int[] array,int left,int right) {

if (left=right) {

return ;

}else {

int partition=partitionIt(array,left,right);

reQuickSort(array,left,partition-1);

reQuickSort(array,partition+1,right);

}

}

private static int partitionIt(int[] array,int left,int right) {

int i=left;

int j=right+1;

int povit=array[left];

while (true) {

while (irightarray[++i]povit) {}

while (j0array[--j]povit) {}

if (ij) {

swap(array,i,j);

}else {

break;

}

}

swap(array,left,j);

return j;

}

private static void swap(int[] array,int i,int j) {

int temp=array[i];

array[i]=array[j];

array[j]=temp;

}

//归并排序

private static int[] sort(int[] a,int low,int high){

int mid = (low+high)/2;

if(lowhigh){

sort(a,low,mid);

sort(a,mid+1,high);

//左右归并

merge(a,low,mid,high);

}

return a;

}

private static void merge(int[] a, int low, int mid, int high) {

int[] temp = new int[high-low+1];

int i= low;

int j = mid+1;

int k=0;

// 把较小的数先移到新数组中

while(i=mid j=high){

if(a[i]a[j]){

temp[k++] = a[i++];

}else{

temp[k++] = a[j++];

}

}

// 把左边剩余的数移入数组

while(i=mid){

temp[k++] = a[i++];

}

// 把右边边剩余的数移入数组

while(j=high){

temp[k++] = a[j++];

}

// 把新数组中的数覆盖nums数组

for(int x=0;xtemp.length;x++){

a[x+low] = temp[x];

}

}

//二分查找

private static int binarySerach(int[] array,int left,int right,int value) {

int i=left;

int j=right;

int mid=(i+j)/2;

if (ij) {

return -1;

}

if (array[mid]value) {

return binarySerach(array,0,mid-1,value);

}else if(array[mid]value){

return binarySerach(array,mid+1,right,value);

}else {

return mid;

}

}

}

java语言描述数据结构与算法崔笑颜的博客 相关文章

贪心算法移除K个数字崔笑颜的博客

题目描述:有一 十进制正整数,移除其中的 K 个数,使剩下的数字是所有可能中最大的。 假设: 字符串的长度一定大于等于 K 字符串不会以 0 开头 输入:1432219 3 输出:4329 算法: import java.util.Scanner;import java.util.Stack; public class DeleteK

Java|ArrayList源码分析|add()增加方法和grow()扩容方法

本文结构: 1.介绍特点 2.基本方法 3.重点源码分析 1.介绍特点 ArrayList: 是List的一个具体实现子类,是List接口的一个数组实现 (里面必定维护了一个数组)。 默认初始容量10, 扩容机制1.5倍。(数组必然有初始容量和扩容机制) 有序。 允许null元素。 允

DocumentBuilderFactory.setFeature调用失败的问题分析、解决javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常

mybatis启动报错 1. DocumentBuilderFactory加载顺序 使用 javax.xml.parsers.DocumentBuilderFactory 系统属性; System.setProperty("javax.xml.parsers.DocumentBuilderFactory", "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl")

解释器模式(Interpretor)_java实现

//20200202 写在前面:刚期末考试完,考了面向对象,里边儿有23个设计模式,我寻思着考完挨个儿实现一下,本文实现解释器模式 解释器模式核心思想 构建语法树,然后将输入的值根据语法树执行 程序源代码: 此处实现一个加减运算的解释器,输入算式,输入参数

肝了一个半月的 Java 项目快速开发脚手架:Chewing

前言 闲来无事,整一个 Java 项目快速开发脚手架。 正文 一、简介 Chewing 是一个简单的 Java 项目快速开发脚手架。既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常用的技术。 二、源码 源码地址:https://github.com/jingqueyimu/ch

Java 的 Mutable 和 Immutable 对象

Mutable object(可变对象) :当对象被创建后,你可以修改对象的状态以及字段。例如 StringBuilder , java.util.Date Immutable object (不可变对象) :当对象被创建后,你不能修改对象的状态以及字段,例如包装类,如: Integer, Long,String 等。 绕

C语言链表——头插法和尾插法

#define _CRT_SECURE_NO_WARNINGS#includestdio.h#includestdlib.htypedef struct ListNode{ int val; ListNode* next;}Node_t, *pNode_t;void print_list(ListNode *head) { ListNode *p = head; while (p != nullptr) { printf("%d ", p-val); p = p-next;

第25天学习打卡

JAVA常用工具API(导学) API的使用: 使用步骤 举例: 顶层父类:Object 控制台录入:Scanner 字符串处理:String 字符串处理:StringBuilder和StringBuffer 日期获取:Date和Calender 基本类型的包装类 根据步骤查找API文档使用对应功能: 查找类 查看模块

地平线

题目描述 Farmer John的牛们认为,太阳升起的那一刻是一天中最美好的,在那时她们 可以看到远方城市模糊的轮廓。显然,这些轮廓其实是城市里建筑物模糊的影子。 建筑物的影子实在太模糊了,牛们只好把它们近似地看成若干个边长为1单位 长度的正方体整齐地叠

KMP模板

题目描述 给定一个字符串 A 和一个字符串 B,求 B 在 A 中的出现次数。 A 中不同位置出现的 B 可重叠,详见样例二、四。 输入格式 输入共两行,分别是字符串 A 和字符串 B。 输出格式 输出一个整数,表示 B 在 A 中的出现次数。 样例数据 input RachelAhhhhh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值