- /**
- 需求:给定一个数组{3,6,8,7,9,2,18},对该数组进行选泽排序和冒泡排序并进行位置置换功能抽取。
- @author liqin
- v1.1
- */
- /*
- 思路:
- 步骤:
- 1、明确该功能运算后没有具体返回值
- 2、在定义功能的过程中有未知内容参与运算
- */
- class ArraySort //定义一个类
- {
- //定义一个选择排序的功能
- public static void selectsort(int[] arr)
- {
- for(int x=0;x<arr.length-1;x++)
- {
- for(int y=x+1;y<arr.length;y++)//y=x+1,保证一直是和相邻的元素进行比较
- {
- if(arr[x]>arr[y])
- {
- swap(arr,x,y);
- }
-
- }
- }
-
- }
- //定义一个位置置换功能
- public static void swap(int[] arr,int a,int b)
- {
- arr[a]=arr[a]^arr[b];//一个数异或同一个数两次,结果还是那个数。
- arr[b]=arr[a]^arr[b];
- arr[a]=arr[a]^arr[b];
- }
- //定义一个打印数组的功能
- public static void printArray(int[] arr)
- {
- System.out.print("[");
- for(int x=0;x<arr.length;x++)
- {
- if(x!=arr.length-1)
- {
- System.out.print(arr[x]+", ");
- }
- else
- {
- System.out.println(arr[x]+"]");
- }
- }
- }
- //定义一个冒泡排序的功能
- public static void bubble(int[] arr)
- {
- for(int x=0;x<arr.length-1;x++)
- {
- for(int y=0;y<arr.length-x-1;y++)//-x:是为了减少一个元素 -1:防止角标越界
- {
- if(arr[y]>arr[y+1])
- {
- swap(arr,y,y+1);
- }
- }
- }
- }
- //主函数,在类中是否定义主函数根据需求而定,当需要程序具备独立运行的功能时,就定义主函数
- public static void main(String[] args)
- {
- int[] arr={3,6,8,7,9,2,18};
- //排序前
- printArray(arr);
- //排序
- bubble(arr);
- //selectsort(arr);
- 排序后
- printArray(arr);
- }
- }
复制代码
多打代码才是王道,以前老是看视屏,看的时候觉的很简单,但是看完后,自己想打代码的时候却发现,很简单的代码自己打出来都错误百出,所以在这里想对那些跟我一样零基础学习Java的哥们说,要想把只是点掌握,没有别的技巧,就是多练多想!
就上面的这个代码,我写的时候那个位置置换功能定义的时候,我写了a=a^b;b=a^b;a=a^b,结果编译不报错,但就是不排序。最后发现自己犯了个大错误,a,b跟数组一毛钱关系都没有,所以,我决的能把简单的事情做好就是不简单!
|