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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Kevin.Kang 高级黑马   /  2015-5-31 03:17  /  1019 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class ArrayDemo2{

  2.         //定义打印方法
  3.         public static void printArray (int [] arr)
  4.                 {
  5.                 System.out.print("[");
  6.                 for (int x=0; x<arr.length; x++)
  7.                         {
  8.                         if (x==arr.length-1)
  9.                         System.out.println(arr[x]+"]");
  10.                         else
  11.                         System.out.print(arr[x]+",");
  12.                         }
  13.                 }

  14.         //定义交换方法
  15.         public static void swap(int [] arr, int x, int y)
  16.                 {
  17.                                                 int temp = arr[x];
  18.                                                 arr[x] = arr[y];
  19.                                                 arr[y] = temp;
  20.                 }

  21.         public static void main (String args [])
  22.                 {
  23.                 int [] array = {33,2,45,14,25,47,78,12};
  24.                 printArray(array);
  25.                 bubbleSort_2(array);
  26.                 printArray(array);
  27.                 }
  28.                 /*
  29.                 需求:给数组arr{33,2,45,14,25,47,12,78}进行排序。

  30.                 思路:
  31.                 选择排序:
  32.                 1.排序需要进行比较,将数组中第一个元素跟其他剩余的进行比较
  33.                   取出最小的一个放置到第一个元素的位置,需要进行遍历
  34.                 2.然后再将数组中的剩余的元素以此进行比较。需要进行循环嵌套

  35.                 冒泡排序:
  36.                 1.需要将相邻的两个数进行比较,然后进行换位,小的在前,大的在后

  37.                 需要明确:
  38.                 1.有没有返回值,返回值的类型是什么
  39.                 2.未知的内容
  40.                 */

  41.                 //选择排序
  42.                 public static void selectSort(int [] arr)
  43.                         {
  44.                         for (int x=0; x<arr.length-1; x++)
  45.                                 {
  46.                                 for (int y=x+1; y<arr.length; y++)
  47.                                         {
  48.                                         if (arr[x]>arr[y])
  49.                                                 swap(arr,x,y);
  50.                                         }
  51.                                 }
  52.                         }

  53.                 //冒泡排序
  54.                 public static void bubbleSort(int [] arr)
  55.                         {
  56.                         for (int x=0; x<arr.length-1; x++)
  57.                                 {
  58.                                 for (int y=0; y<arr.length-1-x; y++)
  59.                 //-1是为了下面y+1越界,
  60.                                 //-x是为了随着外循环的增加,内循环减少循环元素
  61.                                         {
  62.                                         if (arr[y]>arr[y+1])
  63.                                                 swap(arr,y+1,y);
  64.                                         }
  65.                                 }
  66.                         }

  67.                 public static void bubbleSort_2(int [] arr)
  68.                         {
  69.                         for (int x=arr.length-1; x>0; x--)
  70.                                 {
  71.                                 for (int y=0; y<x; y++)
  72.                                         {
  73.                                         if (arr[y]>arr[y+1])
  74.                                                 swap(arr, y, y+1);
  75.                                         }
  76.                                 }
  77.                         }
  78. }
复制代码


11 个回复

倒序浏览
你的冒泡排序效率不高,因为当后面的数据以及有序时,就可以不用再遍历,你可以在循环的时候定义一个flag标记
回复 使用道具 举报
赞一个先
回复 使用道具 举报
武汉小菜鸟 发表于 2015-5-31 23:59
你的冒泡排序效率不高,因为当后面的数据以及有序时,就可以不用再遍历,你可以在循环的时候定义一个flag标 ...

请原谅我只是一个初学者。
回复 使用道具 举报

万分感谢
回复 使用道具 举报
Kevin.Kang 发表于 2015-6-1 11:27
请原谅我只是一个初学者。

你看,假如你要排序的数组已经完全是有序的,那你这个冒泡排序还用循环吗?岂不浪费资源
回复 使用道具 举报
黑马生涯 来自手机 中级黑马 2015-6-1 17:02:09
7#
这个面食会问啊……
回复 使用道具 举报
武汉小菜鸟 发表于 2015-6-1 16:54
你看,假如你要排序的数组已经完全是有序的,那你这个冒泡排序还用循环吗?岂不浪费资源 ...

现在还没有考虑那么多,看过视频能够自己写的出来,我已经感觉很不错了。
回复 使用道具 举报
黑马生涯 发表于 2015-6-1 17:02
这个面食会问啊……

流程才到基础测试,离面试还有很遥远呢。
回复 使用道具 举报
赞一个.....
回复 使用道具 举报
Kevin.Kang 发表于 2015-6-2 09:39
现在还没有考虑那么多,看过视频能够自己写的出来,我已经感觉很不错了。 ...

恩恩,加油加油
回复 使用道具 举报
赞一个!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马