C#实现常见排序算法

1、选择排序。

//选择排序
public static void SelectionSort(int[] dataArray)
{
    for (int i = 0; i < dataArray.Length; i++)
    {
        for (int j = i + 1; j < dataArray.Length; j++)
        {
            if (dataArray[i] > dataArray[j])
            {
                int temp = dataArray[i];
                dataArray[i] = dataArray[j];
                dataArray[j] = temp;
            }
        }
    }
}

2、冒泡排序。

//冒泡排序
public static void BubbleSort(int[] dataArray)
{
    for (int i = 0; i < dataArray.Length; i++)
    {
        bool flag = true;
        for (int j = 0; j < dataArray.Length - i - 1; j++)
        {
            if (dataArray[j] > dataArray[j + 1])
            {
                int temp = dataArray[j];
                dataArray[j] = dataArray[j + 1];
                dataArray[j + 1] = temp;
                flag = false;
            }
        }

        if (flag)
        {
            break;
        }
    }
}

3、插入排序。

//插入排序
public static void InsertionSort(int[] dataArray)
{
    for (int i = 1; i < dataArray.Length; i++)
    {
        for (int j = i; j > 0; j--)
        {
            if (dataArray[j] < dataArray[j - 1])
            {
                int temp = dataArray[j];
                dataArray[j] = dataArray[j - 1];
                dataArray[j - 1] = temp;
            }
            else
            {
                break;
            }
        }
    }
}

4、二分法排序。

//快速排序
public static void QuickSort(int[] dataArray, int left, int right)
{
    int i = left;
    int j = right;
    int temp = dataArray[left];
    if (left >= right)
        return;
    while (i != j)
    {
        while (i < j && dataArray[j] >= temp)
            j--;
        if (j > i)
            dataArray[i] = dataArray[j]; //a[i]已经赋值给temp,所以直接将a[j]赋值给a[i],赋值完之后a[j],有空位
        while (i < j && dataArray[i] <= temp)
            i++;
        if (i < j)
            dataArray[j] = dataArray[i];
    }
    dataArray[i] = temp; //把基准插入,此时i与j已经相等R[low..pivotpos-1].keys≤R[pivotpos].key≤R[pivotpos+1..high].keys
    QuickSort(dataArray, left, i - 1); /*递归左边*/
    QuickSort(dataArray, i + 1, right); /*递归右边*/
}

 

你可能感兴趣的:(算法)