package com.small;
/** * 注意a[0]是否有意思,書上c語言基本都是將a[0]作為哨兵,那麼0號元素不能用,我這裡全部是flag代替
* @author small leaf
* */
public class sort else
}for(j=i-1;j>=high+1;j--)
a[high+1]=flag;
} }/**
* 希爾排序
*/public static void shellsort(int a)
}if(!flag)
} }/**
* 快速排序
*/public static void quicksort(int a,int low,int high)
a[low]=a[high];
while(lowa[i-1]) break;
else
} a[k-1]=flag;
} /**
* 建立大根堆
* @param a
* @param len
*/public static void buildmaxheap(int a,int len)
} /**
* 堆排序
* @param a
* @param len
*/public static void heapsort(int a,int len)
} /**
* 兩兩歸併
* @param a[low....mid] a[mid+1....high] 兩個表中元素已經有序了
* @param low
* @param mid
* @param high
*/public static void merge(int a,int low,int mid,int high){
int i,j,k;
int b=new int[a.length];//不能 int b=a;這樣b引用a指向了a的位址
for(i=0;i
資料結構之排序
在待排序的檔案中,若存在多個關鍵字相同的記錄,經過排序後這些具有相同關鍵字的記錄之間的相對次序保持不變,該排序方法是穩定的 若具有相同關鍵字的記錄之間的相對次序發生變化,則稱這種排序方法是不穩定的。穩定的排序 時間複雜度 空間複雜度 氣泡排序 最差和平均是o n2 最好是o n 1 雙向氣泡排序 最...
資料結構之排序
常用的幾種排序方法 冒泡 插入 選擇 快排 歸併排序 1 冒泡 以公升序為例,也是有兩種思路,1 num 0 依次與後面比較將最小的放到第一位 2 將最大的放到最後一位。我比較習慣用第一種 1 include include using namespace std int main for int ...
資料結構之排序
目錄 氣泡排序 選擇排序 插入排序 shell排序 歸併排序 快速排序 堆排序void bubblesort int arr,int size 每一輪迴圈都把最小的數放在陣列的前半部分 void selectsort int arr,int size if arr min arr i 如果min已被...