首页 > 代码库 > 简单排序:插入,选择和冒泡

简单排序:插入,选择和冒泡

void selectsort(int a[],int n)  // 选择排序的思路就是每次找到当前序列中最小的元素,然后交换
{                               // 就是选择最小的,然后交换
    int i,j,flag;
    for(i = 0;i<n;i++)
    {
        flag = i;               //当前元素
        for(j = i+1;j<n;j++)
        {
            if(a[j]<a[flag])
                flag = j;       //在剩下未排序的数组中找到最小元素的下标
        }
        int temp = a[i];       //交换当前元素和最小元素。
        a[i] = a[flag];
        a[flag] = temp;
    }
}
void insertsort(int a[],int n)   //插入排序的思路是,每次对当前元素进行插入,插入到合适的位置,带来的代价就是每次都要多次移动元素
{
    int i,j,t;
    for(i = 1;i<n;i++)
    {
        t = a[i];
        for(j = i-1; j>=0 &&t<a[j];j--)
            a[j+1] = a[j];      // 比较直到找到比当前元素更小的位置,移动后面的元素
        a[j+1] = t;             // 插入
    }
}

void bubblesort(int a[],int n)
{
    int i,j;
    for(i = 0;i<n;i++)          //冒泡排序是每一次冒泡,就比较相邻两元素的大小,并交换
    {
        for(j = n-1;j>i;j--)
        {
            if(a[j-1]>a[j])
            {
                int temp = a[j];
                a[j] = a[j-1];
                a[j-1] = temp;
            }
        }
    }
}