java代码:
public class QuickSort {
public static void quick_sort(int[] a ,int left ,int right){
if (left < right) {
int i = left;
int j = right;
//以最左端的值作为基准值
int x = a[left];
while (ix){
j--;
}
//找到后再进行赋值
if (i=j时,将基准值赋值给左端计数变量位置的元素a[i]
a[i]=x;
//
quick_sort(a,left,i-1);//左端进行递归快速排序
quick_sort(a,i+1,right);//右端进行递归快速排序
}
}
public static void main(String[] args){
int[] a = {3,4,6,1,2,5};
quick_sort(a,0,a.length-1);
for (int i :
a) {
System.out.print(i+" ");
}
}
}
代码:
public class HeapSort {
/**
* 排序主函数
* @param a
*/
public static void sort(int []a){
//首先从最后一个非叶子节点处构建堆结构
for(int i = a.length/2-1;i>=0;i--){
changeHeap(a,i,a.length);
}
//交换数据,前提是堆已经转换为大顶堆
for (int t = a.length-1;t>0;t--){
//进行交换
swap(a,0,t);
//对交换后的剩余数据从0开始进行再调整,使其成为大顶堆
changeHeap(a,0,t);
}
}
/**
* 构建堆结构和转换大顶堆或小顶堆
* @param a
* @param i
* @param length
*/
public static void changeHeap(int []a ,int i,int length){
//获取当前元素值
int temp = a[i];
//与左右两子节点进行比较
for (int j=2*i+1;j temp){
//此时a[j]并未改变
a[i]=a[j];
i=j;
}else
break;
}
//在此处会对原来的a[j]进行赋值
a[i]=temp;
}
/**
* 进行元素交换函数
* @param a
* @param i
* @param j
*/
public static void swap(int []a ,int i,int j){
int temp = a[i];
a[i]=a[j];
a[j]=temp;
}
public static void main(String[] args){
int []a={2,6,3,0,1};
sort(a);
for (int i :
a) {
System.out.print(i+" ");
}
}
}
代码:
public class MergeSort {
/**
* 排序主方法
* @param a
* @param left
* @param right
* @param temp
*/
public static void sort(int []a ,int left,int right,int []temp){
if (left
代码:
public class ChooseSort {
/**
* 选择排序主方法
* @param a
*/
public static void sort(int []a){
int min=0;
for (int i =0 ;i < a.length;i++){
min=i;
for (int k = i+1;k
代码:
public class BubbleSort {
public static void sort(int []a){
int temp =0;
//需要冒的泡泡数
for (int i = 0;i < a.length-1;i++){
//每个泡泡需要比较的次数
for (int k = 0;k < a.length-1-i;k++){
if (a[k]>a[k+1]){
temp =a[k];
a[k]=a[k+1];
a[k+1]=temp;
}
}
}
}
public static void main(String[] args){
int []a={2,1,5,4,3,6};
sort(a);
for (int i :
a) {
System.out.print(i+" ");
}
}
}
代码:
public class InsertSort {
/**
*
* @param a
*/
public static void sort(int []a){
for (int i =1 ; i < a.length ; i++){
//这里可以使用fori()循环替代
int j =i;
while (j > 0 && a[j]