1.冒泡排序
算法描述:
比较相邻的元素,如果前一个比后一个大,交换之。
第一趟排序第1个和第2个一对,比较与交换,随后第2个和第3个一对比较交换,这样直到倒数第2个和最后1个,将最大的数移动到最后一位。
第二趟将第二大的数移动至倒数第二位
......
因此需要n-1趟;
public static void main(String[] args) {
int[] nums={6,5,4,3,2,1};
sort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public static void sort(int[] nums){
//一定要记住最外层的循环为趟数
for(int i=0;inums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
}
2.选择排序
public static void main(String[] args) {
int[] nums={6,5,4,3,2,1};
sort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public static void sort(int[] nums){
for(int i=0;i
3.插入排序
public static void main(String[] args) {
int[] nums={6,5,4,3,2,1};
sort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public static void sort(int[] nums){
//外层for为趟数
for (int i = 0; i 0;j--){
//比较替换
if(nums[j]
4.希尔排序
public static void main(String[] args) {
int[] nums={6,5,4,3,2,1};
sort(nums);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public static void sort(int[] nums){
//根据数组的长度确定增长量h的值
int h=1;
while(h0){
//排序
//找待插入的元素
for(int i=h;i=h;j=j-h){
//比较
if(nums[j]
5.归并排序
public static void main(String[] args) {
int[] a = { 49, 38, 65, 97, 76, 13, 27, 50 };
mergerSort(a, 0, a.length-1);
System.out.println("排好序的数组:");
for (int e : a)
System.out.print(e+" ");
}
public static void mergerSort(int[] a,int start,int end){
if(start
6.快速排序
public static void main(String[] args) {
int[] nums={6,5,4,3,2,1};
sort(nums,0,nums.length-1);
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
public static void sort(int[] nums,int left,int right){
if(left>right){
return ;
}
// temp中存放基准数
int i=left,j=right;
int temp=nums[left];
while(i!=j){
// 顺序很重要,先从右边开始往左找,直到找到比base值小的数
while(j>i && nums[j]>=temp){
j--;
}
// 再从左往右边找,直到找到比base值大的数
while(j>i && nums[i]<=temp){
i++;
}
// 上面的循环结束表示找到了位置或者(i>=j)了,交换两个数在数组中的位置
if(i