冒泡排序、插入排序、选择排序

冒泡排序

思想:从左到右,元素交换。
第一个元素和第二个元素比较,若第一个元素大于第二个,则交换元素,再第二个元素与第三个元素比较,依次比较,直到比较完。则最尾部的元素是最大值。

void maopao(int a[5],int si)
{
    for (int i = 0; i < si-1; i++)
    {
        for (int j = 0; j < si-1-i; j++)
        {
            if (a[j]>a[j+1])
            {
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
}

插入排序

思想:把数组分为有序和无序,后面的元素与有序的元素比较,假设第一个数据是有序,把第二个数据和排好的数据进行比较,如果第二个元素大于第一个元素,则不差,否则,第一给元素后移,将第二个元素插入到第一个元素的位置,依次进行。

void Insta(int a[5],int si)
{
    int temp=0,flag=0;
    for (int i = 1; i < si; i++)
    {
        temp=a[i];
        for (int j = i-1; j>=0; j--)
        {
            if (temp<a[j])
            {
                a[j+1]=a[j];
                flag=j;
            }else 
            {
                flag=j+1;
                break;
            }
        }
        a[flag]=temp;
    }
    
}

选择排序

思想:从待排序数组中选择最小的放在第一个位置,除第一个位置中的排序数组中选择第二小的数,放在第二个位置,依次选择

void sect(int a[5],int si)
{
    int flag,temp;
    for (int i = 0; i < si; i++)
    {
        flag=i;
        for (int j = i+1; j < si; j++)
        {
            if (a[flag]>a[j])
            {
                flag=j;
            }
        }
        temp=a[i];
        a[i]=a[flag];
        a[flag]=temp;
    }
}
posted @ 2024-05-08 20:14  夏雪呦  阅读(20)  评论(0)    收藏  举报