美文网首页
ReStart Code

ReStart Code

作者: 三月黄橙 | 来源:发表于2018-05-31 17:28 被阅读0次

Zero.基础代码

主函数部分

  • 代码

void solve()
{
    int a[MAX], n;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) scanf("%d", &a[i]);
    InsertSort(a, n);
    for (int i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
}
int main()
{
    solve();
    return 0;
}

First.直接插入排序

  1. 对数组进行主遍历,寻找非顺序元素;
  2. 标记非顺序元素,对该元素之前的所有元素进行次级遍历,并进行比较,如果大于标记元素则将该元素后移,否则将标记元素置于该元素之后;
  3. 重复1.步骤直到主遍历到达数组末尾,结束;
  • 代码

void InsertSort(int a[], int n)//InserSort Code Core
{
    for (int i = 0; i < n - 1; i++)
    {
        if (a[i + 1] < a[i])
        {
            int x = a[i + 1];
            int j = i;
            while (x < a[j])
            {
                a[j + 1] = a[j];
                j--;
            }
            a[j + 1] = x;
        }
    }
}

Second.希尔排序

  1. 取一个增量为数组长度的一半;
  2. 以该增量为步长,对数组进行进行主遍历,寻找非顺序元素;
  3. 标记非顺序元素,对该元素之前且步长可达的所有元素进行次级遍历,并进行比较,如果大于标记元素则将该元素后移至一步之后,否则将标记元素置于该元素之后一步的地方(“一步”意味距离一步长的位置);
  4. 重复2.步骤直到主遍历到达数组末尾;
  5. 令新增量为原增量一半,重复1.2.3.步骤直到增量为0,结束;
  • 代码

void ShellInsert(int a[], int n, int ad)//Like InsertSort
{
    for (int i = 0; i < n - ad; i++)
    {
        if (a[i + ad] < a[i])
        {
            int x = a[i + ad];
            int j = i;
            while (x < a[j])
            {
                a[j + ad] = a[j];
                j -= ad;
            }
            a[j + ad] = x;
        }
    }
}
void ShellSort(int a[], int n)//ShellSort Code Core
{
    int ad = n / 2;
    while (ad)
    {
        ShellInsert(a, n, ad);
        ad /= 2;
    }
}

Third.选择排序

  1. 对数组进行主遍历,对每一个元素进行操作;
  2. 对该元素之后的所有元素进行遍历,并标记这些元素中的最大元素;
  3. 交换主遍历访问的元素和标记元素;
  4. 重复1.2.步骤直到主遍历到达数组末尾,结束;
  • 代码

void SelectSort(int a[], int n)//SelectSort Code Core
{
    for (int i = 0; i < n;i++)
    {
        int index = i;
        int min = a[i];
        for (int j = i + 1; j < n;j++)
        {
            if (a[j] < min)
            {
                min = a[j];
                index = j;
            }
        }
        int temp = a[i];
        a[i] = a[index];
        a[index] = temp;
    }
}

相关文章

  • ReStart Code

    Zero.基础代码 主函数部分 代码 First.直接插入排序 对数组进行主遍历,寻找非顺序元素; 标记非顺序元素...

  • RL debug

    GPU related Blas GEMM launch failedSolution: Restart Code...

  • detach("package:rlang", unload =

    Restart your R session. Make sure not to run any code tha...

  • mongodb connect fail

    1 . restart sudo service mongod restart

  • 2018-07-25

    --restart=""Restart policy to apply when a container exit...

  • 【解决】Failed to restart network.se

    问题:使用systemctl restart network 或 service network restart ...

  • ReStArT

    好像一切平平常常,没有什么不一样。 我早就不是那喊着“友谊天长地久”的少年,或者说我见过太多离别,骨子里知道一切关...

  • restart

    哈 新的开始 乌拉 终于 终于从邪恶组织脱身了 拿着卖身钱,回到解放前 哈哈哈哈哈 抱歉,我有点不能自已 总之,新...

  • restart

    接下来的这段时间 做的任何决定 也许都会影响未来的三五年 亦或者是我的整个一生 那么长的一段时间 我对所有的娱乐提...

  • restart

    2018.10.03日,18:22分 ,我与自己和解啦!同时,还有一个一直奋斗的目标,两年的回忆,我要把他们封存起...

网友评论

      本文标题:ReStart Code

      本文链接:https://www.haomeiwen.com/subject/zkxcsftx.html