50天学习总结附带今天的学习总结

今天学习了选择排序和归并排序的算法实现

并且学习到了一些新的学习方法,想在博客里面记录一下

1.前期不会自己写一些程序,没有关系,先看别人的代码,然后把他们的代码中的精华部分,也就是那一段关于你不会的算法或者你不写的一些函数,你先把他们给背下来。

当然让你背下来不是说让你一个单词一份单词的背,那样也是很枯燥的一件事,我们要做的是先要了解这段代码的思想,然后再自己在编译器上面进行编译,编译通过了之后呢,再打一遍这样重复个3~5遍基本上这段代码也就掌握下来了,然后呢就可以进行默写了。

这样就积累了一段代码,我们要做的是平时可以先看教程,让前人栽的树得到应有的发挥之后呢,再自己写代码。虽然说理工科不是像文科一样的--靠背。但是,经过我的亲身经历,背代码确实是在短时间内提升自己的一个好的办法。

今天呢学了快速排序,和归并排序,并且完成了算法实现

下面是快速排序的C++算法实现

#include<iostream>

using namespace std;

const int N = 10e6 + 10;
  
int n;
int q[N];

void quick_sort(int q[], int l, int r)
{
    if(l >= r) return ;
    
    int x = q[i], i = l - 1, j = r + 1;
    while(i < j)
    {
        do i++; while(q[i] < x);
        do j++; while(q[j] > x);
        if(i > j)
        {
            int temp = q[i];
            q[i] = q[j];
            q[j] = temp;
        }
    }
    quick_sort(q, l, j);
    quick_sort(q, j + 1, r);
}
int main ()
{

    scanf_s("%d",&n);
    for(int i = 0; i < n; i ++)   scanf("%d",&q[i]);

    quick_sort(q, 0, n - 1);

    for(int i = 0; i < n; i ++)    printf("%d",q[i]);

    return 0;

}

下面是归并排序的C++算法实现

#include<iostream>

using namespace std;

const int N = 10e6 + 10;

int n;
int q[N], tmp[N];

void merge_sort(int q[], int l, int r)
{
    if(l >= r)    return;

    int mid = l + r >> 1;

    merge_sort(q,l,mid),merge_sort(q, mid + 1 , r);

    int k = 0, i = 1, j = mid + 1;
    while(i <= mid && j <= r)
        {
            if(q[i] <= q[j]) tmp[k++] = q[i];
            else tmp[k++] = q[j];
        }    
    while(i <= j)
        temp[k ++] = q[i ++];
    while(j <= r)
        temp[k ++] = q[j ++];
    for(int i = 1, j = 0; i < r; i ++, j ++)    q[i] = tmp[j];   
        
}
int main ()
{

    scanf_s("%d"&n);
    for(int i =0; i < n; i ++)  scanf_s("%d",&q[i]);

    merge_sort(q, 0, n-1);

    for(int i = 0; i < n; i ++)  printf("%d",q[i]);

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值