A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求关于冒泡排序,递归算法,快速排序算法等几个算法的讲解和代码实现

3 个回复

倒序浏览
这个是我在网上下的 特别详细。


http://wenku.baidu.com/view/852d4602a6c30c2259019e31.html
回复 使用道具 举报
黑马网友  发表于 2011-8-1 12:03:20
藤椅
快速排序就是对,冒泡排序的一种改进,它就是通过一趟排序将要排序的数据分割成独立两部分,一部分的所有数据都比另一部分都要小,然后再按着个方法对两部分数据分别进行快速排序,整个排序可以递归进行,使整个数据变成有列列序。
这段代码就是快速排序 做的[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:47
板凳

回复 藤椅 的帖子

多谢指点!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马