黑马程序员技术交流社区

标题: 眼过千遍不如手过一遍,今天你打代码了吗? [打印本页]

作者: 2119391569    时间: 2015-3-18 21:10
标题: 眼过千遍不如手过一遍,今天你打代码了吗?
  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跟数组一毛钱关系都没有,所以,我决的能把简单的事情做好就是不简单!
   

     
作者: 落后就要挨打    时间: 2015-3-18 21:13
看懂是一回事,真正自己写出来是另一回事
作者: 2119391569    时间: 2015-3-18 21:18
排序后前面少了一个单行注释,呵呵!一不小心就出错了啊!
作者: 2119391569    时间: 2015-3-18 21:19
落后就要挨打 发表于 2015-3-18 21:13
看懂是一回事,真正自己写出来是另一回事

是的,所以要多多的练习,一起加油啊!
作者: Grady    时间: 2015-3-18 21:19
眼过千遍不如手过一遍,今天你打代码了吗?
作者: 739262720    时间: 2015-3-18 21:21
大家一起努力吧,我现在基础班,天天敲
作者: 2119391569    时间: 2015-3-18 21:31
739262720 发表于 2015-3-18 21:21
大家一起努力吧,我现在基础班,天天敲

基础班的学习氛围很好吧?你离黑马的就业班不远了,近水楼台先得月啊!
作者: 2119391569    时间: 2015-3-18 21:32
Grady 发表于 2015-3-18 21:19
眼过千遍不如手过一遍,今天你打代码了吗?

哈士奇,逗比!挺喜欢这种dog的!呵呵
作者: zooooolk    时间: 2015-3-18 21:44
不知是否能赶上
作者: sandra_bae    时间: 2015-5-1 10:43
嗯嗯,楼主好勤奋~~
作者: 方的黑马    时间: 2015-5-11 00:39
狗屁,与其这样,就说明你不适合做程序员
作者: zhuankill    时间: 2015-5-11 23:29
一起努力!
作者: tiny    时间: 2015-6-11 10:09
多练多想 总结到位。学习了
作者: albus33    时间: 2015-9-13 14:13
多练手指才是王道。
作者: charlie    时间: 2015-9-25 22:57
说的很有道理,一起加油!




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