算法学习笔记——八大排序
public static void InsertSort(int[] arr,int n){
for(int i=1;i<n;i++)
{
for(int j=i;j>=1&&arr[j-1]>arr[j];j--)
swap(arr,j-1,j);
}
}
public static void SellectionSort(int[] arr,int n){
int min;
for(int i=0;i<n;i++)
{
min=i;
for(int j=i+1;j<n;j++)
{
if(arr[min]>arr[j])
min=j;
}
swap(arr,min,i);
}
}
public static void ShellSort(int[] arr,int n){
int h=1;
while(h<n/2)
{
h=2*h+1;
}
while(h>=1)
{
for(int i=h;i<n;i++)
{
for(int j=i;j>=h&&arr[j-h]>arr[j];j-=h)
swap(arr,j-h,j);
}
h/=2;
}
}
public static void HeapSort(int[] arr,int n){
}
public static void BubbleSort(int[] arr,int n){
for(int i=0;i<n-1;i++)
{
for(int j=0;j<n-i-1;j++)
{
if(arr[j]>arr[j+1])
swap(arr,j,j+1);
}
}
}
public static void QuickSort(int[] arr,int n){
if(lo>=hi)return;
int i=lo,j=hi;
int flag=lo;
while(i<=j)
{
if(i==j){Sort.swap(arr,i,flag);break;}
int t=arr[flag];
while(t>=arr[j]&&j>i)
{
j--;
}
while(t<=arr[i]&&j>i)
{
i++;
}
Sort.swap(arr,i,j);
}
QuickSort(arr,lo,i-1);
QuickSort(arr,i+1,hi);
}
public static void MergeSort(int[] arr,int lo,int hi){
int mid=lo+(hi-lo)/2;
if(lo==hi)return;
MergeSort(arr,lo,mid);
MergeSort(arr,mid+1,hi);
merge(arr,lo,hi);
}
public static void merge(int[] arr,int lo,int hi)
{
int[] help=new int[hi-lo+1];
int mid=lo+(hi-lo)/2;
int i=lo;
int j=mid+1;
int k=0;
while(i<=mid&&j<=hi)
{
if(arr[i]<arr[j])
help[k++]=arr[i++];
else
help[k++]=arr[j++];
}
while(i<=mid)
help[k++]=arr[i++];
while(j<=hi)
help[k++]=arr[j++];
i=lo;
for(int o=0;o< help.length;o++)
{
arr[i++]=help[o];
}
}
public static void RadixSort(int[] arr,int n){}