排序算法记录
2024-01-07 23:31:17
冒泡排序
public class BubbleSorting20230704 {
public static void main(String[] args) {
int[] numbers = new int[]{2,3,1,5,4};
for(int i=0;i<numbers.length;i++){
for (int j=0;j<numbers.length-1-i;j++){
if(numbers[j]>numbers[j+1]){
int temp = numbers[j];
numbers[j] = numbers[j+1];
numbers[j+1] =temp;
}
}
}
for(int num:numbers){
System.out.println(num);
}
}
}
插入排序
public class InsertSort {
public static void main(String[] args) {
int[] nums = new int[]{1,8,2,7,3,4,5};
for(int i = 0;i<nums.length-1;i++){
for(int j=i+1;j>0;j--){
int prev = j-1;
if(nums[j]<nums[prev]){
int temp = nums[prev];
nums[prev] = nums[j];
nums[j] = temp;
}
}
}
for(int num:nums){
System.out.println(num);
}
}
}
选择排序
public class SelectionSorting20230704 {
public static void main(String[] args) {
int[] numbers = new int[]{2,3,1,5,4,15};
for(int i=0;i<numbers.length;i++){
int minIndex = i;
int minNumber = numbers[i];
for(int j=i;j<numbers.length;j++){
if(minNumber>numbers[j]){
minIndex = j;
}
}
if(minIndex != i){
minNumber = numbers[minIndex];
numbers[minIndex] = numbers[i];
numbers[i] = minNumber;
}
}
for(int num:numbers){
System.out.println(num);
}
}
}
归并排序
public class MergeSorting20230705 {
public static void main(String[] args) {
int[] nums = new int[]{300,3,1,5,4,400};
sort(nums,0,nums.length-1);
for(int num:nums){
System.out.println(num);
}
}
public static void sort(int[] sortingNumbers,int beginIndex,int endIndex){
if(beginIndex>=endIndex){
return;
}
int middle = beginIndex+(endIndex-beginIndex)/2;
sort(sortingNumbers,beginIndex,middle);
sort(sortingNumbers,middle+1,endIndex);
merge(sortingNumbers,beginIndex,middle,endIndex);
}
public static void merge(int[] sortingNumbers,int startIndex,int middleIndex,int lastIndex) {
int i = startIndex;
int j = middleIndex + 1;
int k = 0;
int[] tem = new int[lastIndex - startIndex + 1];
while (i <= middleIndex && j <= lastIndex) {
if (sortingNumbers[i] > sortingNumbers[j]) {
tem[k++] = sortingNumbers[j++];
} else {
tem[k++] = sortingNumbers[i++];
}
}
int moveBegin = i;
int moveEnd = middleIndex;
if(i>middleIndex){
moveBegin = j;
moveEnd = lastIndex;
}
while(moveBegin<=moveEnd){
tem[k++] = sortingNumbers[moveBegin++];
}
for(int record=0;record<tem.length;record++){
sortingNumbers[startIndex+record] = tem[record];
}
}
}
快速排序:
public class QuickSort20230522 {
public static void main(String[] args) {
int[] nums = new int[]{2,3,1,5,4};
quickStorting(nums,0,nums.length-1);
for(int n:nums){
System.out.println(n);
}
}
static void quickStorting(int[] numbers,int beginIndex,int endIndex){
if(beginIndex>=endIndex){
return;
}
int povit = getPovit(numbers,beginIndex,endIndex);
quickStorting(numbers,beginIndex,povit-1);
quickStorting(numbers,povit+1,endIndex);
}
static int getPovit(int[] numbers,int begin,int end){
int index =begin;
int numberUnderIndex = numbers[end];
for(int i=begin;i<end;i++){
if(numbers[i]<numberUnderIndex){
int number = numbers[i];
numbers[i] = numbers[index];
numbers[index] = number;
index = index +1;
}
}
numbers[end] = numbers[index];
numbers[index] = numberUnderIndex;
return index;
}
}
我是知识星球上约有3万人的AI破局俱乐部初创合伙人,我的微信号是zhaoseaside
,欢迎大家加我,相互学习AI知识和个人IP知识,毕竟这是未来两大风口,加我备注“数字人”,有我制作简单数字人的经验贴。
文章来源:https://blog.csdn.net/qq_42108074/article/details/130775793
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!