2015年9月22日-周二-写的几个排序算法

1、快速排序算法

//quick sort()
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#include <stdlib.h>
#include <unistd.h>
int quick_sort(int a[],int s,int t)
{
    int i=0,j=0,tmp=0;
    if(s<t)
    {
        i=s;j=t+1;
        while(1)
        {
            do{i++;}
            while(!(a[i]>=a[s]||i==t));
            do{j--;}
            while(!(a[j]<=a[s]||j==s));
            if(i<j)
            {
                tmp=a[i];
                a[i]=a[j];
                a[j]=tmp;
            }
            else
                break;
        }
        tmp=a[s];
        a[s]=a[j];
        a[j]=tmp;
        quick_sort(a,s,j-1);
        quick_sort(a,j+1,t);
    }
}

int main()
{
    int i=0;
    int a[10]={2,5,9,1,0,11,7,3,4,6};
    printf("before sort\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    putchar('\n');
    quick_sort(a,0,10);
    printf("after sort\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    putchar('\n');
    return 0;
}


2、 直接插入排序算法

//straight insert sort
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int straight_insert_sort(int a[],int n)
{
    
    #if 1
    int i=0,s=1,tmp=0;
    while(s<n)
    {
        if(a[s]<a[s-1])
        {
            tmp=a[s];
            i=s-1;
            a[s]=a[s-1];
            while(tmp<a[i])
            {
                a[i+1]=a[i];
                i--;
            }
            a[i+1]=tmp;
        }
        s++;
    }
    #endif
}
int main()
{
    int i=0;
    int a[8]={3,1,5,7,2,4,9,6};
    printf("before sort\n");
    for(i=0;i<8;i++)
    {
        printf("%d ",a[i]);
    }
    putchar('\n');
    straight_insert_sort(a,8);
    printf("after sort\n");
    for(i=0;i<8;i++)
    {
        printf("%d ",a[i]);
    }
    putchar('\n');
    return 0;
}


3、选择排序算法

#include <stdio.h>
void simple_sort(int a[],int n)
{
    int i=0,j=0,min=0,tmp=0;
    for(i=0;i<n;i++)
    {
        min=i;
        for(j=i+1;j<n;j++)
        {
            if(a[j]<a[min])
            {
                min=j;
            }
        }
        if(min!=i)
        {
            tmp=a[i];
            a[i]=a[min];
            a[min]=tmp;
        }
    }
}
int main()
{
    int i=0;
    int a[10]={3,10,9,2,1,7,6,4,8,5};
    printf("before sort\n");
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\nafter sort\n");
    simple_sort(a,10);
    for(i=0;i<10;i++)
    {
        printf("%d ",a[i]);
    }
    putchar('\n');
    return 0;
}

### 回答1: 你可以使用以下 SQL 语句来查询本周的周二: ``` SELECT DATEADD(wk, DATEDIFF(wk, 0, GETDATE()), 2) as ThisWeekTuesday; ``` 这段 SQL 语句使用了 `DATEADD` 和 `DATEDIFF` 函数,它们分别用来计算某个期加上一个时间间隔以及两个期之间的时间间隔。在这段语句中,`GETDATE()` 用于获取当前期,`DATEDIFF(wk, 0, GETDATE())` 用于计算当前期与 `0`(代表 1970 1 1 )之间的周数间隔,最后通过 `DATEADD` 函数计算当前周加上 2 天(即周二)。 请注意,上述 SQL 语句是在 SQL Server 中执行的,如果您使用的是其他数据库系统,可能需要使用不同的语法。 ### 回答2: 要查询本周周二的SQL语句可以使用如下代码: ```sql SELECT DATE_ADD(CURDATE(), INTERVAL (2 - WEEKDAY(CURDATE())) % 7 DAY) AS 本周周二; ``` 这个SQL语句使用了MySQL的内置函数来计算本周周二期。`CURDATE()`函数获取当前期,`WEEKDAY()`函数获取当前期是星期几(星期一对应0,星期二对应1,以此类推)。接着,使用`(2 - WEEKDAY(CURDATE())) % 7`来计算当前期与周二之间的天数差距,并使用`DATE_ADD()`函数将当前期加上这个差距,得到本周周二期。 查询结果会返回一个名为"本周周二"的列,其中包含本周周二期。 请注意,这个SQL语句假设星期为每周的第一天。如果星期一被视为每周的第一天,则需要修改代码中的数字2为数字3。另外,不同的数据库管理系统可能有不同的函数和语法来实现相同的目标。 ### 回答3: 要查询本周周二的SQL语句如下: SELECT DATEADD(day, -1 * (DATEPART(weekday, GETDATE()) + 5) % 7 + 2, CAST(GETDATE() AS DATE)) AS 本周周二 解释如下: 1. GETDATE() 函数用于获取当前期和时间。 2. DATEPART(weekday, GETDATE()) 函数用于获取当前期是一周的第几天,返回值为1表示星期天,2表示星期一,依此类推。 3. (DATEPART(weekday, GETDATE()) + 5) % 7 + 2 的结果是用于计算当前期距离上周周一的天数相差多少。因为SQL中星期的计算方式是以1为星期一,所以要将星期转换为7,然后加2,这样就得到了当前期距离上周周一的天数相差多少。 4. DATEADD(day, -1 * (DATEPART(weekday, GETDATE()) + 5) % 7 + 2, CAST(GETDATE() AS DATE)) 的意思是将当前期减去相差的天数,得到上周周一的期。 5. 最后以 SELECT 语句输出上周周一的期。 希望以上的回答能够帮到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值