C语言 简单选择排序算法

首先介绍一下什么是选择排序

选择排序法 是对 定位比较交换法(也就是冒泡排序法) 的一种改进。选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键
字最小的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它

与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

以下是我将我的冒泡排序修改了一下:
#include <stdio.h>


void swap(int *a,int *b)
{       
        int c;
        c = *a;
        *a = *b;
        *b = c;
}


int main()
{
        int str[]={2, 5, 6, 11, 4, 7, 8, 55, 0, 3};
        int i;
        int j;
        int len;·

        len =sizeof(str)/sizeof(str[0]);

        int str1[len];

        for(i=0; i<len; i++)
        {
                printf("%3d",str[i]);
        }
        printf("\n");

        for(i=0; i<len; i++)
        {
                for(j=0;j<len-i-1;j++)
                {
                        if(str[j] > str[j+1])
                        {
                        swap(&str[j],&str[j+1]);
                        }
                }

                str1[i] = str[j];
        }
 for(i=0; i<len; i++)
        {
                printf("%3d",str[i]);
        }
        printf("\n");

        for(i=0; i<len; i++)
        {
                printf("%3d",str1[i]);
        }
        printf("\n");
return 0;
}

运行结果如下:
[lalala@jjjjj ~]$ ./paixv             
  2  5  6 11  4  7  8 55  0  3
  0  2  3  4  5  6  7  8 11 55
 55 11  8  7  6  5  4  3  2  0
我是将选择出来的最大的元素放进了一个新的数组里;创建了一个新的递减的序列;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值