package com.lazyjiang.arith.arithmetic;
import java.util.Arrays;
public class ArrayArith {
public static void selectionSort(int[] arr){
if(arr == null || arr.length < 2){
return;
}
for (int i = 0; i < arr.length - 1; i++) {
int minvalue = i;
for (int j = i + 1; j < arr.length; j++) {
minvalue = arr[j] < arr[minvalue] ? j : minvalue;
}
swap(arr,i,minvalue);
}
}
public static void bubbleSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int e = arr.length - 1; e > 0; e--) {
for (int i = 0; i < e; i++) {
if (arr[i] > arr[i + 1]) {
swap1(arr, i, i + 1);
}
}
}
}
public static void insertionSort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
for (int i = 1; i < arr.length; i++) {
for (int j = i - 1; j >= 0 && arr[j] > arr[j + 1]; j--) {
swap1(arr, j, j + 1);
}
}
}
public static void comparator(int[] arr) {
Arrays.sort(arr);
}
public static void swap(int[] arr,int i,int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void swap1(int[] arr,int i,int j){
arr[i] = arr[i] ^ arr[j];
arr[j] = arr[i] ^ arr[j];
arr[i] = arr[i] ^ arr[j];
}
public static int[] randomArr(int maxSize,int maxValue){
int[] arr = new int[(int) ((maxSize + 1) * Math.random())];
for (int i = 0; i < arr.length; i++) {
arr[i] = (int)((maxValue + 1) * Math.random()) - (int)(maxValue * Math.random());
}
return arr;
}
public static int[] copyArr(int[] arr){
if(arr == null){
return null;
}
int[] res = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
res[i] = arr[i];
}
return res;
}
public static int[] cloneArr(int[] arr){
if(arr == null){
return null;
}
int[] res = arr.clone();
return arr;
}
public static boolean isEquals(int[] arr1,int[] arr2){
if((arr1 == null && arr2 != null) || (arr1 != null && arr2 == null)){
return false;
}
if(arr1 == null && arr2 == null){
return true;
}
if(arr1.length != arr2.length){
return false;
}
for (int i = 0; i < arr1.length; i++) {
if(arr1[i] != arr2[i]){
return false;
}
}
return true;
}
public static void printArr(int[] arr){
if (arr == null) {
return;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
public static void main(String[] args) {
int maxSize = 100;
int maxValue = 100;
boolean succeed = true;
for (int i = 0; i < 1000; i++) {
int[] arr1 = randomArr(maxSize, maxValue);
int[] arr2 = copyArr(arr1);
selectionSort(arr1);
comparator(arr2);
if (!isEquals(arr1, arr2)) {
succeed = false;
printArr(arr1);
printArr(arr2);
break;
}
}
System.out.println(succeed ? "isOK!" : "ha sai");
System.out.println("------------------------------------------");
int[] arr = randomArr(maxSize, maxValue);
printArr(arr);
selectionSort(arr);
printArr(arr);
System.out.println("------------------------------------------");
int[] arr1 = randomArr(maxSize, maxValue);
selectionSort(arr1);
int[] arr2 = copyArr(arr1);
int[] arr3 = cloneArr(arr1);
System.out.println(arr1.hashCode());
System.out.println(arr2.hashCode());
System.out.println(arr3.hashCode());
arr3[0] = 100;
if(!isEquals(arr1, arr3)){
System.out.println("what fuck");
}
}
}