黑马程序员技术交流社区

标题: 关于冒泡排序,递归,快速等几个算法的讲解和代码实现 [打印本页]

作者: 鄢甲力    时间: 2011-8-1 10:39
标题: 关于冒泡排序,递归,快速等几个算法的讲解和代码实现
求关于冒泡排序,递归算法,快速排序算法等几个算法的讲解和代码实现
作者: 李海涵    时间: 2011-8-1 11:47
这个是我在网上下的 特别详细。


http://wenku.baidu.com/view/852d4602a6c30c2259019e31.html
作者: 匿名    时间: 2011-8-1 12:03
快速排序就是对,冒泡排序的一种改进,它就是通过一趟排序将要排序的数据分割成独立两部分,一部分的所有数据都比另一部分都要小,然后再按着个方法对两部分数据分别进行快速排序,整个排序可以递归进行,使整个数据变成有列列序。
这段代码就是快速排序 做的[code=java]public class QuickSort
{
        public static void sort(Comparable[] data, int low, int high)
        {
                //枢纽元,一般以第一个元素为基准进行划分
                int i = low;
                int j = high;
                if (low < high)
                {
                        //从数组两端交替地向中间扫描
                        Comparable pivotKey = data[low];
                        //进行扫描的指针i,j;i从左边开始,j从右边开始
                        while (i < j)
                        {
                                while(i<j && data[j].compareTo(pivotKey) > 0)
                                {
                                        j--;
                                }
                                //end while
                                if (i < j)
                                {
                                        //比枢纽元素小的移动到左边
                                        data[i] = data[j];
                                        i++;
                                }// end if
                                while (i < j && data[i].compareTo(pivotKey) < 0)
                                {
                                        i++;
                                }//end while
                                if (i < j)
                                {
                                        //比枢纽元素大的移动到右边
                                        data[j] = data[i];
                                        j--;
                                }//end if
                        }//end while
                        //枢纽元素移动到正确位置
                        data[i] = pivotKey;
                        //前半个子表递归排序
                        sort(data, low, i - 1);
                        //后半个子表递归排序
                        sort(data, i + 1, high);
                }//end if
        }//end sort
        public static void main(String[] args)
        {
                Comparable[] c = {4,9,23,45,27,5,2};
                sort(c,0,c.length - 1);
                for(Comparable data : c)
                {
                        System.out.println(data);
                }
        }
}[/code]
作者: 匿名    时间: 2011-8-1 12:17
标题: 回复 藤椅 的帖子
多谢指点!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2