写一个冒泡算法,整型数组从小到大排序
这多次循环还是多次排序一样吗?一个循环能不能写完这个问题?
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array1 = {23,12,3,56,89,22,6,90,13,55};
for(int i=0;i<array1.length;i++){
for(int j=i+1;j<array1.length;j++){
int temp=0;
if(array1[i]>array1[j]){
temp=array1[i];
array1[i]=array1[j];
array1[j]=temp;
}
}
}
System.out.println(Arrays.toString(array1));
}
}
一个循环肯定不行的
多次循环就是多趟排序,每一趟完成一个数的排位
相当于每次找到一个最大值放到数组尾部
冒泡排序都是两个循环来写的,一个肯定是不行的,完成这个问题的话,先对整型进行筛选,然后再进行排序
参考:
public static void bubbleSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j + 1];
arr[j + 1] = arr[j];
arr[j] = temp;
}
}
}
}
冒泡排序本身就是由二重循环组成的
只写一重循环不可能完成任何一种排序,要么二重循环要么递归
至于多次排序,如果你的数组在排序好之后又有新的元素加入,就需要再次排序
否则后面的多次排序是没有效果的,并不改变位置
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {3, 1, 6, 2, 9, 4, 5};
bubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void bubbleSort(int[] arr) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
每次循环将子序列中最小的数放在第一位;将问题逐渐变为n-1个数比较大小的问题(递归思想);这种排序属于确定位置找最小元素的问题。