小甲鱼 发表于 2016-12-7 22:15:54

已有 12 人购买  本主题需向作者支付 10 鱼币 才能浏览 购买主题

人造人 发表于 2016-12-10 00:07:36

这个图的速度有点快,可以放慢速度吗?

小甲鱼 发表于 2016-12-13 16:32:51

人造人 发表于 2016-12-10 00:07
这个图的速度有点快,可以放慢速度吗?

其实就是找到整个序列中最小的数然后放到当前位置~~

人造人 发表于 2016-12-13 16:44:40

小甲鱼 发表于 2016-12-13 16:32
其实就是找到整个序列中最小的数然后放到当前位置~~

那就是不可以了^_^

chhch 发表于 2018-6-24 17:17:18

人造人 发表于 2016-12-10 00:07
这个图的速度有点快,可以放慢速度吗?

我调慢了0.5s

人造人 发表于 2018-6-24 17:25:11

chhch 发表于 2018-6-24 17:17
我调慢了0.5s

谢谢

2316829671 发表于 2019-4-12 16:16:10

为什么不在if语句里交换,像这样
void selection_sort(int array[], int length)
{
    int i, j, temp;

    for(i = 0; i < length - 1; i++)
    {
      for(j = i + 1; j < length; j++)
      {
            if(array > array)
            {
                temp = array;
                array = array;
                array = temp;
            }
      }
    }
}

Acacia 发表于 2020-2-12 22:46:26

{:10_250:}

Draem 发表于 2020-3-27 21:39:54

#include<stdio.h>

void insert(int a[],int len)
{
        int i,j,min,tem;
        for(i = 0;i < len - 1;i++)
        {
                min = i;
                for(j = i+1;j < len; j ++)
                {
                        if(a > a)
                        min = j;
                }
                tem = a;
                a = a;
                a = tem;
        }
}

int main(void)
{
        int i = 0,len;

        int a[] = {23,3,4,4,3,65,45,76,45,34,76,23,34,45,65,3,4432,23,43,23,2};

        len = sizeof(a)/sizeof(a);
       
        insert(a,len);
       
        for(i = 0;i < len;i++)
        {
                printf("%d ",a);
               
        }
        return 0;
}

Draem 发表于 2020-3-31 16:29:23

#include <stdio.h>

void insert(int a[],int len)
{
        int i,j,k,tem;
        for(i = 0;i < len;i ++)
        {
                tem = a;
                for(j = i + 1 ;j < len; j++ )
                {
                        if(a > a)
                        {
                                a = a;
                                k = j;
                        }
                }
                a = tem;
        }
}
int main()
{
        int a[] = {3,4,2,54,2,6,3,47,4,23,5,23,87,5,76,34,23,4,6745,23,54,98};
        int len,i;
        len = sizeof(a) / sizeof(a);
        insert(a,len);
        for(i = 0;i < len;i++)
        {
                printf("%d ",a);
        }
      putchar('\n');

      return 0;
}

xzzyg 发表于 2021-8-12 17:31:11

我这样写怎么打印出来的不对,有没有童鞋给看看?
void select(int arr[],int len)
{
    int i,j,tt;
    int tem,min;
    for(i=0;i<len-1;i++)
    {
      min=arr;
      for(j=i+1;j<len;j++)
      {
          if(min>arr)
          {
             min=arr;
             tt=j;
          }
      }
      tem=min;
      arr=arr;
      arr=tem;
    }
}

Puppet16 发表于 2022-5-3 18:16:14

好好学习才能天天向上!

lslhj 发表于 2022-8-4 18:16:35

2316829671 发表于 2019-4-12 16:16
为什么不在if语句里交换,像这样

他的原理是找到最小的那个,在进行交换,而不是找到一个小的就交换

xzzyg 发表于 2024-2-19 23:27:29

2316829671 发表于 2019-4-12 16:16
为什么不在if语句里交换,像这样

需要找到后面还未排序的所有数据中最大的或最小的后再进行交换放在最前面,而不是每一次比较就交换一次(需要找到最大或最小的数才做交换)。

[QWQ] 发表于 2024-8-20 18:52:07

2316829671 发表于 2019-4-12 16:16
为什么不在if语句里交换,像这样

就像冒泡排序了吧
页: [1]
查看完整版本: 各种各这样的排序算法:选择排序(*)