快速排序:选择一个值为key 然后让begin和end开始扫描,此时如果end遇到小于key的数停下,直到begin遇到比key大的值,此时两边交换数值,继续前进 直到相遇,此时将key与相遇的值互换,key左边都比他小,右边都比它大,将key的左右序列分别进行同样的操作,直到左右序列只剩一个数据或者左右序列不存在,停止。
代码:
package com.jk.Sort;
public class QuckSort1 {
public static void main(String[] args) {
int[] arr = new int[]{99, 97, 96, 95, 94, 92, 91, 90, 88, 78};
int begin=0;
int end=arr.length-1;
int left=begin;
int right=end;
int key=begin;
for (int i=0;i<=arr.length-1;i++){
if(begin>end){
break;
}
if (arr[end]>=arr[key]&&begin<end) {
end--;
}
if(arr[begin]<=arr[key]&&begin<end){
begin++;
}
int a=arr[begin];
arr[begin]=arr[end];
arr[end]=a;
// if(begin==end){
// int b=arr[end];
// arr[end]=arr[key];
// arr[key]=b;
//
// }
key=end;
}
for (int x=0;x<=9;x++){
System.out.println(arr[x]);
}
}
}
冒泡排序:从第一个值开始与后面的值比较,比他小的就互换位置,遇到比他大的,选比他大的继续继续比较,直到最大的值在最右边
代码:
package com.jk.Sort;
//冒泡排序
public class Maopao {
public static void main(String[] args) {
int[] arr=new int[]{99,97,96,95,94,92,91,90,88,78};
int k;
for (int i=0;i<9;i++){
for (int j=0;j<9-i;j++){
if(arr[j]>arr[j+1]){
k=arr[j];
arr[j]=arr[j+1];
arr[j+1]=k;
}
}
}
for (int x=0;x<=9;x++){
System.out.println(arr[x]);
}
}
}
插入排序:开始选取一个item,我们假设第一个数据已经有序,此时选取第二个值,遇到item大的元素,该元素往后移一位,直到遇到比item小的,把item插入到该元素后面,如果已排序元素均小于item,将它放在第0位,
代码:
package com.jk.Sort;
public class QuickSort {
public static void main(String[] args) {
int[] arr = new int[]{99, 97, 96, 95, 94, 92, 91, 90, 88, 78};
for (int i = 0; i < arr.length - 1; i++) {
int end = i;
int tem = arr[end + 1];
while (end >= 0) {
if (tem < arr[end]) {
arr[end + 1] = arr[end];
end--;
} else {
break;
}
}
arr[end + 1] = tem;
}
for (int x = 0; x <= 9; x++) {
System.out.println(arr[x]);
}
}
}
//插入排序 有序区 开始只有一个end=0; 后面for循环累加 有序区越来越大 从后往前扫描遇到比tem大的,比他大的就往后移,比他小的就退出循环,
// 把tem加在比他小的后面如果没有比tem小的 ,tem放在第一位 因为此时end=-1;所以end+1=0;
本文解析了快速排序、冒泡排序和插入排序的基本原理,通过代码示例展示了它们如何工作,并对比了它们的效率和适用场景。从选择排序到稳定排序,理解这些基础算法有助于提升编程技能。
2500

被折叠的 条评论
为什么被折叠?



