几种简单的排序算法

冒泡排序:
每次外层循环都找到num[i]后面元素的最大的数值,并将这个数值存入num[i],原先num[i]存储的数值被移动到后面,这样等整个循环都结束,数组按照从大到小的顺序排列。

int num[10]={1,2,3,4,5,6,7,8,9,10};
int temp;
for(int i=0;i<10;i++)
{
    for(int j=i;j<10;j++)
    {
        if(num[i]<num[j])
        {
            temp=num[i];
            num[i]=num[j];
            num[j]=temp;
        }
    }

}

插入排序:

将数组前n个数已经按照顺序排列好,接下来将第n+1个数插入到这前n个数中间,直到把所有的数都插入完。

static void insertion_sort(int[] unsorted)
{
    for (int i = 1; i < unsorted.Length; i++)
    {
        if (unsorted[i - 1] > unsorted[i])
        {
            int temp = unsorted[i];
            int j = i;
            while (j > 0 && unsorted[j - 1] > temp)
            {
                unsorted[j] = unsorted[j - 1];
                j--;
            }
            unsorted[j] = temp;
        }
    }
}

选择排序:

每次都将最小的元素放在num[i],然后i++,这样直到把整个数组遍历一遍,数组将按照从小到大的顺序排列。

for(int i=0; i<v.size(); i++)
{
        int min = v[i]; 
        int temp;
        int index = i;
        for(int j=i+1;j<v.size();j++)
        {
            if(v[j] < min)
            { 
                min = v[j]; 
                index = j;
            }       
        }       

        temp = v[i]; 
        v[i] = min;
        v[index]= temp;
}

快速排序:

void sort(int *a, int left, int right)
{
    if(left >= right)
    {
        return ;
    }
    int i = left;
    int j = right;
    int key = a[left];

    while(i < j)
    {
        while(i < j && key <= a[j])
        {
            j--;
        }
        a[i] = a[j];
        while(i < j && key >= a[i])
        {
            i++;
        }
        a[j] = a[i];
    }

    a[i] = key;
    sort(a, left, i - 1);
    sort(a, i + 1, right);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值