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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. 需求:给定一个数组{3,6,8,7,9,2,18},对该数组进行选泽排序和冒泡排序并进行位置置换功能抽取。
  3. @author liqin
  4. v1.1

  5. */
  6. /*
  7. 思路:
  8. 步骤:
  9. 1、明确该功能运算后没有具体返回值
  10. 2、在定义功能的过程中有未知内容参与运算

  11. */
  12. class ArraySort //定义一个类
  13. {
  14.         //定义一个选择排序的功能
  15.         public static void selectsort(int[] arr)
  16.         {
  17.                 for(int x=0;x<arr.length-1;x++)
  18.                 {
  19.                         for(int y=x+1;y<arr.length;y++)//y=x+1,保证一直是和相邻的元素进行比较
  20.                         {
  21.                                 if(arr[x]>arr[y])
  22.                                 {
  23.                                         swap(arr,x,y);
  24.                                 }       
  25.                                
  26.                         }
  27.                 }
  28.                
  29.         }
  30.         //定义一个位置置换功能
  31.         public static void swap(int[] arr,int a,int b)
  32.         {
  33.                 arr[a]=arr[a]^arr[b];//一个数异或同一个数两次,结果还是那个数。
  34.                 arr[b]=arr[a]^arr[b];
  35.                 arr[a]=arr[a]^arr[b];
  36.         }
  37.         //定义一个打印数组的功能
  38.         public static void printArray(int[] arr)
  39.         {
  40.                 System.out.print("[");
  41.                 for(int x=0;x<arr.length;x++)
  42.                 {
  43.                         if(x!=arr.length-1)
  44.                         {
  45.                                 System.out.print(arr[x]+", ");
  46.                         }
  47.                         else
  48.                         {
  49.                                 System.out.println(arr[x]+"]");
  50.                         }
  51.                 }
  52.         }
  53.         //定义一个冒泡排序的功能
  54.         public static void bubble(int[] arr)
  55.         {
  56.                 for(int x=0;x<arr.length-1;x++)
  57.                 {
  58.                         for(int y=0;y<arr.length-x-1;y++)//-x:是为了减少一个元素 -1:防止角标越界
  59.                         {
  60.                                 if(arr[y]>arr[y+1])
  61.                                 {
  62.                                         swap(arr,y,y+1);
  63.                                 }
  64.                         }
  65.                 }
  66.         }
  67.         //主函数,在类中是否定义主函数根据需求而定,当需要程序具备独立运行的功能时,就定义主函数
  68.         public static void main(String[] args)
  69.         {
  70.                 int[] arr={3,6,8,7,9,2,18};
  71.                 //排序前
  72.                 printArray(arr);
  73.                 //排序
  74.                 bubble(arr);
  75.                 //selectsort(arr);
  76.                 排序后
  77.                 printArray(arr);
  78.         }
  79. }
复制代码

          多打代码才是王道,以前老是看视屏,看的时候觉的很简单,但是看完后,自己想打代码的时候却发现,很简单的代码自己打出来都错误百出,所以在这里想对那些跟我一样零基础学习Java的哥们说,要想把只是点掌握,没有别的技巧,就是多练多想!
            就上面的这个代码,我写的时候那个位置置换功能定义的时候,我写了a=a^b;b=a^b;a=a^b,结果编译不报错,但就是不排序。最后发现自己犯了个大错误,a,b跟数组一毛钱关系都没有,所以,我决的能把简单的事情做好就是不简单!
   

     

评分

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

查看全部评分

14 个回复

倒序浏览
看懂是一回事,真正自己写出来是另一回事
回复 使用道具 举报
排序后前面少了一个单行注释,呵呵!一不小心就出错了啊!
回复 使用道具 举报
落后就要挨打 发表于 2015-3-18 21:13
看懂是一回事,真正自己写出来是另一回事

是的,所以要多多的练习,一起加油啊!
回复 使用道具 举报
眼过千遍不如手过一遍,今天你打代码了吗?
回复 使用道具 举报
大家一起努力吧,我现在基础班,天天敲
回复 使用道具 举报
739262720 发表于 2015-3-18 21:21
大家一起努力吧,我现在基础班,天天敲

基础班的学习氛围很好吧?你离黑马的就业班不远了,近水楼台先得月啊!
回复 使用道具 举报
Grady 发表于 2015-3-18 21:19
眼过千遍不如手过一遍,今天你打代码了吗?

哈士奇,逗比!挺喜欢这种dog的!呵呵
回复 使用道具 举报
不知是否能赶上
回复 使用道具 举报
嗯嗯,楼主好勤奋~~
回复 使用道具 举报
狗屁,与其这样,就说明你不适合做程序员
回复 使用道具 举报
一起努力!
回复 使用道具 举报
tiny 中级黑马 2015-6-11 10:09:10
13#
多练多想 总结到位。学习了
回复 使用道具 举报
多练手指才是王道。
回复 使用道具 举报
说的很有道理,一起加油!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马