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

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;

            }

        }

    }

}

 

你可能感兴趣的:(排序)