算法之基础排序算法

这里介绍几个所简单的排序方法:冒泡排序,插入排序,选择排序;这些都是最基础的排序方法,也是编程算法之中最基础的,这些排序方法只是用于数据量较小的排序问题中。

  1. 冒泡排序

应为方法的执行过程类似水中的气泡逐个上升,所以起名冒泡排序;

此方法就是对已知数组中的依次进行比较,如果前者大于后者者则两者换位,对这样的比较方式循环进行一定次数之后就会得到结果。

例如一个4个数的数组,那么就是1-2,2-3,3-4进行比较最多循环四次即可得到结果。

public static int[] GetSortMaoPao(int[] j)

        {

            for (int i = 0; i < j.Length; i++)

            {

                for (int i = 0; i < j.Length-1; i++)

                {

                    if (j[i]>j[i+1])

                    {

                        int s2 = j[i];

                        j[i] = j[i+1];

                        j[i + 1] = s2;

                    }

                }

            }

            return j;

        }

减少循环次数:当需要换位时都需要一个临时变量啦存储要换位的数字,所以当顺序已经拍好的时候,if内部就不会运行,临时变量也不会改变,可以通过判断临时变量是否变化来终止循环,提交结果。

        public static int[] GetSortMaoPao(int[] j)

        {

            int s1 = 0; //临时变量的对比变量

            int s2 = s1-1; //临时变量,-1只是为了与比较值先区分开

            while (s1!=s2)

            {

                s1 = s2; //进入循环时将前一次循环得到的临时变量值付给比较值

                for (int i = 0; i < j.Length-1; i++)

                {

                    if (j[i]>j[i+1])

                    {

                        s2 = j[i];

                        j[i] = j[i+1];

                        j[i + 1] = s2;

                    }

                }

            }

            return j;

        }

  1. 插入排序

前者是将大的向后放,现在是将小的向前放,从第二个开始对前面的每一个数进行比较,小了就向前换,换到比他小的就停止。

        public static int[] GetSortChadui(int[] j)

        {

            for (int i = 1; i <j.Length; i++)

            {

                int temp;

                for (int n = i; n >0; n--)

                {

                    if (j[n]<j[n-1])

                    {

                        temp = j[n - 1];

                        j[n - 1] = j[n];

                        j[n] = temp;

                    }

                    else

                    {

                        break;

                    }

                }

            }

            return j;

        }

  1. 选择排序

一级循环依次的到要换位数的序号,在二级循环中从一级循环中得到的序号所指的数开始与后面的所有数进行比较,得到最小数的序号,此时有要换位数的序号和最小数的序号,对两者进行换位,最终得到结果。就好比是一队人排大小,排第一个的时候从所有人中找到最低的,让第一个和他换位,排第二个的时候除了第一个,再找出最低的和第二个换位,这样一直换到倒数第二个就排出来了

public static int[] GetSortXuanze(int[] j)

        {

            int min_index;

            for (int i = 0; i < j.Length-1; i++)

            {

                min_index = i;

                for (int n = i+1; n < j.Length; n++)

                {

                    if (j[min_index] > j[n])

                    {

                        min_index = n;

                    }

                }

                if (min_index!=i)

                {

                    int temp = j[min_index];

                    j[min_index] = j[i];

                    j[i] = temp;

                }

            }

            return j;

        }

posted @ 2012-08-22 21:44  魔法钳  阅读(275)  评论(0)    收藏  举报