/*冒泡排序*/
public static void bubbleSort(int[] arr)
{
for(int x=0;x< arr.length-1;x++)//for(itn x=arr.length-1;x>0;x--)
{
for(int y=0;y<arr.length-x;y++)//-x:让每一次比较的次数减少;-1让角标不越界
{
if(arr[y]>arr[y+1]
{
int temp = arr [y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
/*选择排序*/
public static void selectSort(int[] arr)
{
for(int x=0;x< arr.length-1;x++)
{
for(int y=x+1;y<arr.length;y++)
{
if(arr[x]>arr[y]
{
int temp = arr [x];
arr[x] = arr[y];
arr[y+1] = temp;
}
}
}
}
/*真实开发时用*/
Arrays.sort(arr);
printArray(arr);
/*
发现无论什么排序。都需要对满足条件的元素进行位置置换,对其封装成一个函数。
*/
public static void swap(int[] arr,int a,int b)\
{
int temp =arr[a];
arr[a] = arr [b];
arr[b] = temp;
}
/*希尔排序*/
package com.zuidaima.sort;
/**
*@author www.zuidaima.com
**/
public class ShellSort {
public static <T extends Comparable<? super T>> void shellSort(T[] array, int len) {
int d = len;
while (d > 1) {
d = (d + 1) / 2;
for (int i = 0; i < len - d; i++) {
if (array[i + d].compareTo(array[i]) < 0) {
T temp = array[i + d];
array[i + d] = array[i];
array[i] = temp;
}
}
}
}
public static void main(String[] args) {
Integer[] testArray = {23, 25, 12, 42, 35};
ShellSort.shellSort(testArray, 5);
System.out.println("The result is:");
for (Integer item : testArray) {
System.out.print(item);
System.out.print(' ');
}
}
}
/*快速排序*/
void quick_sort(int s[], int l, int r)
{
if (l < r)
{
//Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
j--;
if(i < j)
s[i++] = s[j];
while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x;
quick_sort(s, l, i - 1); // 递归调用
quick_sort(s, i + 1, r);
}
}
|
|