黑马程序员技术交流社区
标题: 两种排序方法 [打印本页]
作者: joe520kay 时间: 2015-7-22 23:36
标题: 两种排序方法
今天回去看了毕老师的数组视频,重新认识了下两种排序方法。基础试题有考到哦!
选择排序:
package com.joe.sortDemo;
/**
* 选择排序法
*
* @author joe 操作原理: 第一次:依次用角标0的数跟所有数比较 第二次:依次用角标1的数跟所有数比较 以此类推
*/
public class selectSortDemo {
public static void selectSort(int[] arr) {
for (int x = 0; x < arr.length - 1; x++) { // 开始角标为0的数
for (int y = x + 1; y < arr.length; y++) { // 开始角标为1的数
if (arr[x] > arr[y]) {
// int temp = arr[x];
// arr[x] = arr[y];
// arr[y] = temp;
swap(arr, x, y);
}
}
}
}
public static void main(String[] args) {
int[] arr = { 3, 2, 5, 1, 7, 9 };
// 排序前
printArray(arr);
// 排序
selectSort(arr);
// 排序后
printArray(arr);
}
// 打印数组的方法
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 swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr;
arr = temp;
}
}
冒泡排序:
package com.joe.sortDemo;
/**
* 冒泡排序法
*
* @author joe 相邻两个元素进行比较,如果符合条件换位
*/
public class bubbleSortDemo {
public static void bubbleSort(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]) {
// int temp = arr[y];
// arr[y] = arr[y + 1];
// arr[y + 1] = temp;
swap(arr, y, y + 1);
}
}
}
}
public static void main(String[] args) {
int[] arr = { 3, 2, 5, 1, 7, 9 };
// 排序前
printArray(arr);
// 排序
bubbleSort(arr);
// 排序后
printArray(arr);
}
// 打印数组的方法
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 swap(int[] arr, int a, int b) {
int temp = arr[a];
arr[a] = arr;
arr = temp;
}
}
作者: 耀阳圣尊 时间: 2015-7-23 09:53
赞一赞,我一直很喜欢你的排版
作者: joe520kay 时间: 2015-7-23 11:26
向你反映个问题哦,就是贴吧里如果使用代码那个功能发帖,发出来的代码排版还是乱的哦~
作者: 耀阳圣尊 时间: 2015-7-23 11:43
好的,非常感谢。我们会及时处理。
作者: joe520kay 时间: 2015-7-23 11:52
还有个问题想问你哦,就是那些截止日期过了但还可以回复的奖励技术分的贴,还能送分么?
作者: 耀阳圣尊 时间: 2015-7-23 14:46
http://bbs.itheima.com/thread-208318-1-1.html 你可以回复这个。或是今天下午四点参加在线答题送技术分的活动
作者: 何鹏程 时间: 2015-7-23 17:00
貌似还是乱了,交换方法里的b丢了。。。
作者: joe520kay 时间: 2015-7-23 20:55
额,今天刚好有事错过了
作者: gongyanfa123 时间: 2015-7-23 21:08
进来一看,排版很不错。
作者: maizi1912 时间: 2015-7-23 21:15
不错 我的博客写的也是这个
作者: zhaoyue 时间: 2015-7-23 21:21
我想问下那个运行效率会高一些啊??
作者: joe520kay 时间: 2015-7-23 21:50
差不多的 其实 你可以用系统时间来测试下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |