当前位置:文档之家› JAVA数组的排序方法实例

JAVA数组的排序方法实例

冒泡排序法1.public class SortArray_01 {2. public static void main(String args[]) {3. int[] array = { 14, 5, 86, 4, 12, 3, 21, 13, 11, 2, 55}; // 创建一个初始化的一维数组array4. System.out.println("未排序的数组:");5. for (int i = 0; i < array.length; i++) {// 遍历array数组中的元素6. System.out.print(" " + array[i]);// 输出数组元素7. if ((i + 1) % 5 == 0) //每5个元素一行8. System.out.println();9. }10. int mid; // 定义一个中间变量,起到临时存储数据的作用11. for (int i = 0; i < array.length; i++) { // 执行冒泡排序法12. for (int j = i; j < array.length; j++) {13. if (array[j] < array[i]) {14. mid = array[i];15. array[i] = array[j];16. array[j] = mid;17. }18. }19. }20. System.out.println("\n使用冒泡法排序后的数组:");21. for (int i = 0; i < array.length; i++) { //遍历排好序的array数组中的元素22. System.out.print(" " + array[i]); //输出数组元素23. if ((i + 1) % 5 == 0)24. System.out.println(); // 每5个元素一行25. }26. }27.}数组递增排序1.import java.util.Arrays;2.import java.util.Random;3.4.public class SortArray_02 {5. public static void main(String[] args) {6. Random rd = new Random();7. int[] array = new int[15]; // 声明数组8. System.out.println("没有使用sort方法前的数组:");9. for (int i = 0; i < array.length; i++) { // 利用随机数随意产生15个0~20之间的随机数10. array[i] = rd.nextInt(20); // 给array数组赋值11. System.out.print(" " + array[i]);12. if ((i + 1) % 5 == 0)13. System.out.println();14. }15. Arrays.sort(array); // 对array数组进行升序排序16. System.out.println("\n使用sort方法后的数组:");17. for (int i = 0; i < array.length; i++) { // 将array数组中的数据输出18. System.out.print(" " + array[i]);19. if ((i + 1) % 5 == 0)20. System.out.println();21. }22. }23.}部分数组递增排序1.import java.util.Arrays;2.import java.util.Random;3.4.public class SortArray_03 {5. public static void main(String[] args) {6. Random rd = new Random();7. int[] array = new int[15]; // 声明数组8. System.out.println("没有使用sort方法前的数组:");9. for (int i = 0; i < array.length; i++) { // 利用随机数随意产生15个0~20之间的随机数10. array[i] = rd.nextInt(20); // 给array数组赋值11. System.out.print(" " + array[i]);12. if ((i + 1) % 5 == 0)13. System.out.println();14. }15. Arrays.sort(array,5,14); // 对array数组中的第5个元素~第13个元素之间进行升序排序16. System.out.println("\n使用sort方法后的数组:");17. for (int i = 0; i < array.length; i++) { // 将array数组中的数据输出18. System.out.print(" " + array[i]);19. if ((i + 1) % 5 == 0)20. System.out.println();21. }22. }23.}选择排序法1.public class SortArray_04 {2. public static void main(String args[]) {3. int[] array = { 14, 5, 86, 4, 12, 3, 51, 13, 11, 2, 32,6 }; // 创建一个初始化的一维数组array4. int keyValue; // 表示最小的元素值5. int index; // 表示最小的元素值的下标6. int temp; // 中间变量7. System.out.println("未排序的数组:");8. for (int i = 0; i < array.length; i++) { // 遍历array数组中的元素9. System.out.print(" " + array[i]); // 输出数组元素10. if ((i + 1) % 5 == 0) // 每5个元素一行11. System.out.println();12. }13. for (int i = 0; i < array.length; i++) { // 使用选择排序法的核心14. index = i;15. keyValue = array[i];16. for (int j = i; j < array.length; j++)17. if (array[j] < keyValue) {18. index = j;19. keyValue = array[j];20. }21. temp = array[i];22. array[i] = array[index];23. array[index] = temp;24. }25. System.out.println("\n使用选择排序法后的数组:");26. for (int i = 0; i < array.length; i++) { // 遍历排好序的array数组中的元素27. System.out.print(" " + array[i]); // 输出数组元素28. if ((i + 1) % 5 == 0)29. System.out.println(); // 每5个元素一行30. }31. }32.}快速排序法0.public class SortArray_05 {1. public static void main(String args[]) {2. int[] intArray = { 12, 11, 45, 6, 8, 43, 40, 57, 3, 20,15 };3. System.out.println("排序前的数组:");4. for (int i = 0; i < intArray.length; i++) {5. System.out.print(" " + intArray[i]); //输出数组元素6. if ((i + 1) % 5 == 0) // 每5个元素一行7. System.out.println();8. }9. System.out.println();10. int[] b = quickSort(intArray, 0, intArray.length - 1);// 调用quickSort11. System.out.println("使用快迅排序法后的数组:");12. for (int i = 0; i < b.length; i++) {13. System.out.print(" " + b[i]);14. if ((i + 1) % 5 == 0) // 每5个元素一行15. System.out.println();16. }17. }18. public static int getMiddle(int[] array, int left, int right) {19. int temp;20. // 进行一趟快速排序,返回中心点位置21. int mid = array[left]; // 把中心置于a[0]22. while (left < right) {23. while (left < right && array[right] >= mid)24. right--;25. temp = array[right]; // 将比中心点小的数据移动到左边26. array[right] = array[left];27. array[left] = temp;28. while (left < right && array[left] <= mid)29. left++;30. temp = array[right]; // 将比中心点大的数据移动到右边31. array[right] = array[left];32. array[left] = temp;33. }34. array[left] = mid; // 中心移到正确位置35. return left; // 返回中心点36. }37. public static int[] quickSort(int[] array, int left, int right) {// 快速排序法38. if (left < right - 1) { // 如果开始点和结点没有重叠的时候,也就是指针没有执行到结尾39. int mid = getMiddle(array, left, right); //重新获取中间点40. quickSort(array, left, mid - 1);41. quickSort(array, mid + 1, right);42. }43. return array;44. }45.}。

相关主题