Sort
3224 ワード
package com.u.util.arithmetic.sort;
import java.util.Random;
public class MySort {
public MySort()
{
}
//bobble sort
public static void test(int[] arr, int length)
{
length = arr.length;
int temp = 0;
for(int i = 0; i < length; i++)
{
for(int j = 0; j < i; j++)
{
if(arr[i] < arr[j])
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
public static void _main(String[] args) {
Random rand = new Random(System.currentTimeMillis());
final int MAX = 100;
int[] arr = new int[MAX];
for(int i = 0; i < arr.length; i++)
{
arr[i] = rand.nextInt();
}
MySort.test(arr, arr.length);
for(int i = 0; i < arr.length; i++)
{
System.out.println(arr[i]);
}
}
public static void __main(String[] args) {
/*
* quick sort
*/
int[] _arr = new int[]{5,7,2,9,4,6,3,1};
for(int i: _arr)
{
System.out.print(i + " ");
}
System.out.println();
(new MySort()).quickSort(_arr, 0, _arr.length - 1);
for(int i: _arr)
{
System.out.print(i + " ");
}
}
//quick sort Recursion
public void quickSort(int[] arr, int low, int hight)
{
if(low < hight)
{
int middle = this.findMiddle(arr, low, hight);
quickSort(arr, low, middle);
quickSort(arr, middle + 1, hight);
}
else
return;
}
public int getMiddle(int[] arr, int low, int hight)
{
int middle = 0;
if(low < hight)
{
middle = (low + hight) / 2;
}
return middle;
}
public int findMiddle(int[] arr, int low, int hight)
{
/*
int left = arr[low];
int right = arr[hight];
*/
/*
* 5,7,2,9,4,6,3,1 f f
* 1,7,2,9,4,6,3,5 f t
* 1,5,2,9,4,6,3,7 t f
* 1,3,2,9,4,6,5,7 f
* 1,3,2,5,4,6,9,7
* 1,3,2,4,5,6,9,7
*
* 1,5,2,7,4,6,3,9
*/
int left = low;
int right = hight;
int temp = 0;
boolean flag = false;
while(left < right)
{
if(arr[left] > arr[right])
{
flag = !flag;
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
if(flag)
left++;
else
right--;
}
else
if(!flag) right--;
else left++;
}
return left;
}
public static void main(String[] args) {
int[] arr = new int[]{5,7,2,9,4,6,3,1};
arr = new int[]{69, 0, 70, 6, 38, 38, 24, 56, 44, 26, 73, 77, 30, 45, 97, 65};
(new MySort()).quickSort(arr, 0, arr.length - 1);
for(int i: arr)
{
System.out.print(i + " ");
}
}
}