简单的数组排序、反转

好久没写了,是啊!好长时间了,那今天来点干货吧!(或许太简单了),笔者是有点忘记,又拿出来写了一遍,也就凑合看下吧!

一些关于数组基本的排序,反转等,写的不全啊,是啊,脑子记不住了

 

package com.wanghang.sort;

import java.util.Arrays;
import java.util.Random;

/**
 * 排序等
 *
 * @author Hang.W
 * @version 1.0, 2017-01-23 11:30:53
 */
public class Sort {

	public static void main(String[] args) {
		
		int[] arr = {9, 7, 5, 3, 1, 8, 6, 4, 2, 0};
		bubbleSort(arr);
		System.out.println("冒泡法:" + Arrays.toString(arr));
		
		reverse(arr);
		System.out.println("反 转:" + Arrays.toString(arr));
		
		insertSort(arr);
		System.out.println("插入法:" + Arrays.toString(arr));
		
		shuffle(arr);
		System.out.println("洗牌法:" + Arrays.toString(arr));
		
		printDiamond();
		
		printTriangle(6);
		
		String new_str = reverse("Monkey D Luffy");
		System.out.println("反转后的字符串:" + new_str);
	}
	
	/**
	 * 冒泡排序
	 * 
	 * @param arr 待排序的数组
	 */
	public static void bubbleSort(int[] arr) {
		for (int i = 0; i < arr.length - 1; i++) {
			for (int j = 0; j < arr.length - i - 1; j++) {
				if(arr[j] > arr[j + 1]) {
					int temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				}
			}
		}
	}
	
	/**
	 * 插入排序
	 * 
	 * @param arr
	 */
	public static void insertSort(int[] arr) {
		for (int i = 1; i < arr.length; i++) {
			for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
				int temp = arr[j + 1];
				arr[j + 1] = arr[j];
				arr[j] = temp;
			}
		}
	}
	
	/**
	 * 洗牌法
	 * 
	 * @param arr
	 */
	public static void shuffle(int[] arr) {
		Random random = new Random();
		for(int i = arr.length - 1; i >= 1; i--) {
			int j = random.nextInt(i);
			int temp = arr[i];
			arr[i] = arr[j];
			arr[j] = temp;
		}
	}
	
	/**
	 * 数组反转
	 * 
	 * @param arr
	 */
	public static void reverse(int[] arr) {
		for(int start = 0, end = arr.length - 1; start < end; start++, end--) {
			int temp = arr[start];
			arr[start] = arr[end];
			arr[end] = temp;
		}
	}
	
	/**
	 * 菱形
	 */
	public static void printDiamond() {
		// 打印4行
		for (int y = 1; y <= 4; y++) {
			// 每行开头空格
			for(int x = 1; x <= 4 - y; x++) {
				System.out.print(" ");
			}
			// 空格后接*
			for(int z = 1; z <= 2 * y - 1; z++) {
				System.out.print("*");
			}
			System.out.println();
		}
		
		// 打印4行,最后一行只有空格,没有*
		for(int y = 4; y >= 1; y--) {
			for(int x = 1; x <= 5 - y; x++) {
				System.out.print(" ");
			}
			for(int z = 1; z <= 2 * y - 3; z++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
	
	/**
	 * 打印杨辉三角
	 * 
	 * @param n
	 */
	public static void printTriangle(int n) {
		int[][] arr = new int[n][n];
		for (int i = 0; i < arr.length; i++) {
			arr[i][0] = 1;
			arr[i][i] = 1;
		}
		
		// 每行的元素等于同列上一行的元素加上同列上一行的元素的前一个元素之和
		for(int y = 2; y < arr.length; y++) {
			for(int x= 1; x < arr[y].length - 1; x++) {
				arr[y][x] = arr[y - 1][x] + arr[y - 1][x - 1];
			}
		}
		
		// 打印二维数组
		for(int y = 0; y < arr.length; y++) {
			for(int x = 0; x <= y; x++) {
				System.out.print(arr[y][x] + "\t");
			}
			System.out.println();
		}
	}
	
	/**
	 * 递归实现字符串反转
	 * 
	 * @param str 目标字符串
	 * @return 反转后的字符串
	 */
	public static String reverse(String str) {
		if(str == "" || str.length() == 1)
			return str;
		// 每次获取第一个元素追加到新字符串的最后
		return reverse(str.substring(1)) + str.charAt(0);

	}
}

 

运行结果:

继续努力哈!

想去总结下这个Hibernate的Dao层的通用模板(敬请期待吧)!
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值