黑马程序员技术交流社区

标题: 总结了5中常见算法,冒泡排序、选择排序、插入排序、快... [打印本页]

作者: 天涯追梦    时间: 2014-4-24 10:05
标题: 总结了5中常见算法,冒泡排序、选择排序、插入排序、快...
本帖最后由 天涯追梦 于 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, 下载次数: 278)

0_1329967950X8ro.gif

作者: 欢欢    时间: 2014-4-24 21:06
黑马程序员
作者: @追梦    时间: 2014-4-25 10:29
学习了。。
作者: 2528870651    时间: 2014-4-25 13:38
我吧,我回复了。出来吧
作者: gma103    时间: 2014-4-25 15:16
学习学习
作者: 菠萝包丶    时间: 2014-4-25 15:22
果断来学习学习
作者: Sunday    时间: 2014-4-26 00:30
学习了。。。

作者: 大漠孤烟    时间: 2014-4-26 13:54
楼主总结的好,学习啦、、、
作者: 136616244    时间: 2014-4-26 21:44
copy的还是直接总结的
作者: 136616244    时间: 2014-4-26 21:45
楼主总结恩专家一样
作者: 今生无憾    时间: 2014-4-26 22:10
学习学习。。赞一个~~~
作者: 244611    时间: 2014-4-26 22:26
请问一下:冒泡排序视频上有2种,为什么x--比较好?毕老师说是只在堆上操作,求解释???
作者: ò壞尛孩    时间: 2014-4-26 23:10
我以前学过9大排序方法!改天总结出来给大家分享!不过书好像给我卖了~额!现在后悔了!
作者: ò壞尛孩    时间: 2014-4-26 23:13
我以前学过9大排序方法!改天总结出来给大家分享!不过书好像给我卖了~额!现在后悔了!
作者: X-Sniper²º¹    时间: 2014-4-29 21:50
来学习学习
作者: MagicBoy    时间: 2014-4-29 22:32
回忆复习,好好巩固巩固!
作者: qidanei624    时间: 2014-5-9 02:54
很好的教程 谢谢分享
作者: sheng6699    时间: 2014-5-11 23:03
看看。。。。。
作者: Dragonman    时间: 2015-10-9 00:35
来学习了




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