• 五种基本算法


    代码
    class Sorter
    {

    //选择排序法实现

    private int min;

    public void Sort1(int[] arr)
    {

    for (int i = 0; i < arr.Length - 1; ++i)
    {

    min
    = i;

    for (int j = i + 1; j < arr.Length; ++j)
    {

    if (arr[j] < arr[min])

    min
    = j;

    }

    int t = arr[min];

    arr[min]
    = arr[i];

    arr[i]
    = t;

    }

    }

    //冒泡排序法实现

    public void Sort2(int[] arr)
    {

    int i, j, temp;

    bool done = false;

    j
    = 1;

    while ((j < arr.Length) && (!done))//判断长度
    {

    done
    = true;

    for (i = 0; i < arr.Length - j; i++)
    {

    if (arr[i] > arr[i + 1])
    {

    done
    = false;

    temp
    = arr[i];

    arr[i]
    = arr[i + 1];//交换数据

    arr[i
    + 1] = temp;

    }

    }

    j
    ++;

    }

    }

    private void swap(ref int l, ref int r)
    {

    int temp;

    temp
    = l;

    l
    = r;

    r
    = temp;

    }

    //快速排序法实现

    public void Sort3(int[] list, int low, int high)
    {

    int pivot;//存储分支点

    int l, r;

    int mid;

    if (high <= low)

    return;

    else if (high == low + 1)
    {

    if (list[low] > list[high])

    swap(
    ref list[low], ref list[high]);

    return;

    }

    mid
    = (low + high) >> 1;

    pivot
    = list[mid];

    swap(
    ref list[low], ref list[mid]);

    l
    = low + 1;

    r
    = high;

    do
    {

    while (l <= r && list[l] < pivot)

    l
    ++;

    while (list[r] >= pivot)

    r
    --;

    if (l < r)

    swap(
    ref list[l], ref list[r]);

    }
    while (l < r);

    list[low]
    = list[r];

    list[r]
    = pivot;

    if (low + 1 < r)

    Sort3(list, low, r
    - 1);

    if (r + 1 < high)

    Sort3(list, r
    + 1, high);

    }

    //插入排序法实现

    public void Sort4(int[] arr)
    {

    for (int i = 1; i < arr.Length; i++)
    {

    int t = arr[i];

    int j = i;

    while ((j > 0) && (arr[j - 1] > t))
    {

    arr[j]
    = arr[j - 1];//交换顺序

    --j;

    }

    arr[j]
    = t;

    }

    }

    //希尔排序法实现

    public void Sort5(int[] arr)
    {

    int inc;

    for (inc = 1; inc <= arr.Length / 9; inc = 3 * inc + 1) ;

    for (; inc > 0; inc /= 3)
    {

    for (int i = inc + 1; i <= arr.Length; i += inc)
    {

    int t = arr[i - 1];

    int j = i;

    while ((j > inc) && (arr[j - inc - 1] > t))
    {

    arr[j
    - 1] = arr[j - inc - 1];//交换数据

    j
    -= inc;

    }

    arr[j
    - 1] = t;

    }

    }

    }
    }
  • 相关阅读:
    Notes of the scrum meeting(12.7)
    Notes of the scrum meeting(12.5)
    事后分析报告(M1阶段)
    锁屏软件发布说明
    Android 锁屏软件MemoryDebris测试报告
    锁屏软件功能介绍
    Notes of the scrum meeting(11/4)
    Notes of the scrum meeting(11/3)
    Notes of the scrum meeting(11/2)
    SCRUM 12.17
  • 原文地址:https://www.cnblogs.com/Snowolf/p/1912388.html
Copyright © 2020-2023  润新知