java算法
cainiao_zhangxl
好好学习编程。
展开
-
堆排序
public class HeapSort { public static void main(String[] args) { int[] a={49,38,65,97,76,13,27,49,78,34,12,64}; int arrayLength=a.length; //循环建堆 for(int i=原创 2017-07-30 10:14:40 · 141 阅读 · 0 评论 -
快排非递归
private static void nonRec_quickSort(int[] a,int start,int end) { LinkedList stack = new LinkedList(); //用栈模拟 if(start end) { stack.push(end); stack.push(star转载 2017-09-01 09:42:18 · 384 阅读 · 0 评论 -
最长不连续子串
import java.util.HashMap;import java.util.Map;public class TestString01 {public static void main(String[] args) {longestNodupSubstring("abcdefghijhh");}/*** cursor里面存放字符的在字符串中的位置转载 2017-08-29 16:29:27 · 900 阅读 · 0 评论 -
每组输入两个要输入n组,把这n组按照每组的第一个数进行排序
import java.util.Comparator;import java.util.Map;import java.util.Scanner;import java.util.TreeMap;public class paixu {public static void main(String[] args) {Scanner in=new Scanne原创 2017-08-27 09:25:03 · 432 阅读 · 0 评论 -
输入一个链表,输出该链表中倒数第k个结点
思路:搞两个指针一个先走k-1步,然后两个一起走,如果先走的为空了,那么后走的所指向的就是我们要找的倒数第k个指针。注意k,不能比链表长度大。public class diK { public ListNode FindKthToTail(ListNode head,int k) { ListNode prenode=null; prenode原创 2017-07-28 11:37:39 · 214 阅读 · 0 评论 -
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
思路:查看第二个位置数字是否为奇数,如果为奇数则看第一个数字,如果第一个数字为偶数交换位置,否者不做变化。接着看第三位,第四位……直到所有数字有序位置。public class Solution { public void reOrderArray(int [] array) { int a=array.length; for(int i=原创 2017-07-28 11:11:10 · 233 阅读 · 0 评论 -
希尔排序
希尔排序的思想:首先把排序分为若干个序列进行直接插入排序,等记录中的数基本有序再进行一次直接插入排序。package chengxu;public class shellSort {public static void shellSort(int[] numbers){int len=numbers.length;int temp=0;int j=0;for原创 2017-07-28 10:27:00 · 146 阅读 · 0 评论 -
二分查找(折半查找)
package other;public class BinarySearch { /* * 循环实现二分查找算法arr 已排好序的数组x 需要查找的数-1 无法查到数据 */ public static int binarySearch(int[] arr, int x) { int low = 0;转载 2017-07-27 11:13:09 · 242 阅读 · 0 评论 -
插入排序
基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。public static void insertSort(int[] numbers) { int size = numbers.length; int temp = 0 ; int j = 0;原创 2017-07-26 09:49:46 · 135 阅读 · 0 评论 -
选择排序
基本思想:在所有待排序中的数中选择一个最小的数与第一个数交换,然后再在余下的数中选择最小的数与第二个交换,直到所有数有序为止。public static void selectSort(int[] numbers) { int size = numbers.length; //数组长度 int temp = 0 ; //中间变量 fo原创 2017-07-26 09:21:22 · 136 阅读 · 0 评论 -
快速排序
快速排序的思想: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。public class quickSort {public static int getMid(int[] numbers,int low,int top){int temp=numbers[low];//把首原创 2017-07-24 21:02:52 · 162 阅读 · 0 评论 -
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数public class Solution { public boolean Find(int target, int [][] array) { for(int i=0;i fo原创 2017-07-22 21:05:28 · 302 阅读 · 0 评论 -
java实现洗牌 发牌
package com.java.lei.homework;import java.util.Arrays;import java.util.Random;public class PokerGame { //1.创建数组,用以存储扑克牌 static String[] pokers = new String[54]; public static vo转载 2017-09-01 10:48:39 · 780 阅读 · 0 评论