1.快速排序
快速排序时间复杂度为O(nlogn) ,空见复杂度为O(logn)~O(n)
public int[] QuickSort(int[] arr,int length, int index)
{
int start;
start = arr[index];
int i = length - 1;
int j = index;
while (j < i)
{
while (start < arr[i])
{
i--;
}
if (j < i)
{
arr[j] = arr[i];
j++;
}
while (arr[j] < start)
{
j++;
}
if (j < i)
{
arr[i] = arr[j];
i--;
}
}
arr[i] = start;
QuickSort(arr, i,0);
QuickSort(arr, length , i);
return arr;
}
}
2.冒泡排序
时间复杂度:O(n2) 空间复杂度:O(1) ;是稳定的排序方式、
public static int[] BubbleSort(int[] arr, int length)
{
int n=1;
for (; n < length; n++)
{
int r = 0;
int start = 0,m = 1;
for (; m < length; m++)
{
if ((r < length -1)&&(arr[r]>=arr[r+1]))
{
start = arr[r];
arr[r] = arr[r + 1];
arr[r + 1] = start;
Console.WriteLine("{0},{1},{2}", arr[r], arr[r + 1],r);
r++;
}
}
}
return arr;
}
3. 选择排序
平均时间复杂度:O(n2),空间复杂度 O(1) ,属于稳定性排序;
public int[] SelectSort(int[] arr, int length)
{
int n=1;
int index = 0;
int start;
for (; n < length; n++, index++)
{
start = arr[index];
int a = index;
for (int i = index; i < length-1;i++ )
{
if((start > arr[i + 1]) && (i < length))
{
start = arr[i + 1];
a = i + 1;
}
}
arr[a] = arr[index];
arr[index] = start;
}
return arr;
}