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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 天涯追梦 于 2014-4-24 12:40 编辑

总结了5中常见算法,冒泡排序、选择排序、插入排序、快速排序和归并排序,前三种比较简单,只做简单介绍和代码举例,后两种代码有些复杂,做详细介绍。
*冒泡排序:定义两个for循环,比较相邻元素,前者比后者大就交换相邻元素
*选择排序:定义初始最小项,比较找出最小项,然后进行交换
*插入排序:将一个记录插入到已经排序好的有序表中,从而得到一个新的,记录数增一的有序表。
*                定义两个for循环,以第一个记录为已经排好的有序表,然后逐渐排序后面的记录。
public class Test33 {

        public static void main(String[] args) {
                int[] a = { 3, 5, 1, 56, 3, 15, 7, 0, 1 };
                System.out.print("原有数组:");
                print(a);
                xuanZe(a);
                System.out.print("选择排序:");
                print(a);
                maoPao(a);
                System.out.print("冒泡排序:");
                print(a);
                chaRu(a);
                System.out.print("插入排序:");
                print(a);

        }
//插入排序
        private static void chaRu(int[] a) {
                for (int i = 1; i < a.length; i++) {
                        for (int j = i; j > 0; j--) {
                                if (a[j] < a[j - 1]) {
                                        jiaohuan(a, j, j - 1);
                                }
                        }
                }
        }
//打印数组
        private static void print(int[] a) {
                for (int i : a) {
                        System.out.print(i + "   ");
                }
                System.out.println();
        }
//冒泡排序
        private static void maoPao(int[] a) {
                for (int i = 0; i < a.length; i++) {
                        for (int j = i + 1; j < a.length; j++) {
                                if (a > a[j]) {
jiaohuan(a, i, j);
                                }
                        }
                }
        }
//交换数组元素
        private static void jiaohuan(int[] a, int i, int j) {
                int temp;
                temp = a;
                a = a[j];
                a[j] = temp;
        }
//选择排序
        private static void xuanZe(int[] a) {
                for (int i = 0; i < a.length - 1; i++) {
                        int min = i;
                        for (int j = i + 1; j < a.length; j++) {
                                if (a[min] > a[j]) {
                                        min = j;
                                }
                        }
                        if (min != i) {
                                jiaohuan(a, min, i);
                        }

                }

        }
}




         快速排序的基本思想:
      
游客,如果您要查看本帖隐藏内容请回复

0_1329967950X8ro.gif (155.66 KB, 下载次数: 262)

0_1329967950X8ro.gif

点评

注意排版  发表于 2014-4-24 11:18

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

19 个回复

倒序浏览
黑马程序员
回复 使用道具 举报
学习了。。
回复 使用道具 举报
我吧,我回复了。出来吧
回复 使用道具 举报
学习学习
回复 使用道具 举报
果断来学习学习
回复 使用道具 举报
Sunday 中级黑马 2014-4-26 00:30:05
7#
学习了。。。
回复 使用道具 举报
楼主总结的好,学习啦、、、
回复 使用道具 举报
copy的还是直接总结的
回复 使用道具 举报
楼主总结恩专家一样
回复 使用道具 举报
学习学习。。赞一个~~~
回复 使用道具 举报
请问一下:冒泡排序视频上有2种,为什么x--比较好?毕老师说是只在堆上操作,求解释???
回复 使用道具 举报
我以前学过9大排序方法!改天总结出来给大家分享!不过书好像给我卖了~额!现在后悔了!
回复 使用道具 举报
我以前学过9大排序方法!改天总结出来给大家分享!不过书好像给我卖了~额!现在后悔了!
回复 使用道具 举报
来学习学习
回复 使用道具 举报
回忆复习,好好巩固巩固!
回复 使用道具 举报
很好的教程 谢谢分享
回复 使用道具 举报
看看。。。。。
回复 使用道具 举报
来学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马