package sort;
public class Sort {
public static void bubbleSort(int[] numbers){
for(int i = numbers.length -1 ;i>0;i--){
for(int j = 0;j<i;j++){
if(numbers[j] > numbers[j+1]){
swap(numbers, j, j+1);
}
}
}
System.out.println("冒泡排序:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
public static void insertSort(int[] numbers){
for(int i = 1;i<numbers.length;i++){
if(numbers[i] < numbers[i-1]){
int temp = numbers[i];
int j = i-1;
for(; (j>=0) &&(temp < numbers[j]);j--){
numbers[j+1] = numbers[j];
}
numbers[j+1] = temp;
}
}
System.out.println("插入排序:");
for (int number : numbers) {
System.out.print(number + " ");
}
System.out.println();
}
public static int[] mergeSort(int[] numbers,int start,int end){
if(start < end){
int mid = (start + end)/2;
mergeSort(numbers, start, mid);
mergeSort(numbers, mid+1, end);
merge(numbers, start, mid, mid+1, end);
}
return numbers;
}
public static void selectSort(int[] numbers){
int min;
int mink;
for(int i = 0;i<numbers.length;i++){
min = numbers[i];
mink = i;
for(int j = i;j<numbers.length;j++){
if(numbers[j] < min){
min = numbers[j];
mink = j;
}
}
if(!(min == numbers[i])){
numbers[mink] = numbers[i];
numbers[i] = min;
}
}
System.out.println("选择排序:");
for (int i : numbers) {
System.out.print(i + " ");
}
System.out.println();
}
private static void merge(int[] numbers,int start1,int end1,int start2,int end2){
int i = start1,j = start2;
int k = 0;
int temp[] = new int[end2-start1+1];
while(i <= end1 && j <= end2){
if(numbers[i] <= numbers[j]){
temp[k++] = numbers[i++];
}else{
temp[k++] = numbers[j++];
}
}
while(i <= end1){
temp[k++] = numbers[i++];
}
while(j <= end2){
temp[k++] = numbers[j++];
}
for(int m = 0; m < temp.length;m++){
numbers[start1 + m] = temp[m];
}
}
private static void swap(int[] numbers,int index1,int index2){
int temp = numbers[index1];
numbers[index1] = numbers[index2];
numbers[index2] = temp;
}
public static void main(String[] args) {
int[] numbers = {456,845,343,421,256,487,487,690,558,455,658,466,677,788,643};
int[] result =mergeSort(numbers, 0, numbers.length-1);
System.out.println("归并排序:");
for (int i : result) {
System.out.print(i + " ");
}
System.out.println();
bubbleSort(numbers);
selectSort(numbers);
insertSort(numbers);
}
}
分享到:
相关推荐
冒泡排序法是一种简单的排序算法,通过不断地比较相邻的元素,直到没有元素再需要交换为止。其实现步骤如下: * 首先,从数组的第一个元素开始,比较相邻的元素,如果它们的顺序错误,则交换它们。 * 继续比较直到...
7种排序算法程序汇总 冒泡排序 选择排序 插入排序 希排序尔 快速排序 二叉排序树 堆排序
带哨兵的直接排序法是一种基于直接插入法的排序算法。它的基本思想是将待排序的序列分成两个部分:已经排序的部分和未排序的部分。然后,对未排序的部分使用哨兵元素进行插入排序,将其插入到已经排序的部分中。 带...
在计算机科学领域中,排序算法是一种基本的算法,它可以将数据按照一定的顺序排列,以便更好地存储、检索和处理数据。排序算法的速度和效率对程序的性能有着至关重要的影响。 1.冒泡排序算法 冒泡排序算法是一种...
桶式排序法桶式排序法桶式排序法桶式排序法
描述中的程序实现了快速排序法,可能是用一种编程语言如C++、Java或Python编写的,用于对一维数组进行排序。这种程序的实现一般包括上述的三个主要步骤,并可能包含优化措施,例如处理小数组时改用插入排序,或者...
冒泡排序是一种简单直观的排序算法,它重复地遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的...
在编程领域,排序算法是计算机科学中的核心概念,特别是在数据结构和算法分析中。Java作为广泛应用的编程语言,提供了丰富的工具和技术来实现各种排序算法。本文将深入探讨标题"常用排序算法java演示"中涉及的知识点...
时间复杂度用于衡量排序算法的效率,通常以大O表示法来表示。文档中提到了几种不同排序算法的时间复杂度: - **O(n²)**:插入排序、冒泡排序和选择排序的时间复杂度均为O(n²),这意味着随着数据量的增加,这些...
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...
在计算机科学中,排序算法是数据结构领域的重要组成部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序排列。本资源提供了三种经典的排序算法的C语言实现:堆排序、直接插入排序和快速排序。 首先,让...
归并排序(Merge Sort)是一种基于分治策略的高效排序算法,由计算机科学家John W. Backus于1945年提出。它的工作原理可以分为三个主要步骤:分解、解决和合并。 1. 分解:将原始数据序列分成两个相等(或接近相等...
希尔排序是一种基于插入排序的算法,通过将待排序的数组元素按某个增量分组,然后对每组使用直接插入排序算法排序。随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止...
在计算机科学中,排序算法是将一组数据按照一定的顺序排列的过程。排序算法的性能直接影响到数据处理和分析的效率。本课程设计中,我们将对八种内部排序算法的性能进行分析和比较。 1. 直接插入排序(Insertion ...
在计算机科学领域,排序算法是数据处理中的核心部分,它涉及到如何有效地重新排列一组数据,使其按照特定的顺序排列。本资源"总结了各种排序算法,并用C++代码实现,并有演示",提供了丰富的学习材料,包括不同类型...
排序算法是计算机科学中最基础和重要的算法之一,用于将一组数据按照特定的顺序进行排列。本文将对几种常见的内部排序算法和外部排序算法进行详细总结。 首先,排序的基本定义是:给定一个包含n个记录的序列,其...
合并排序是一种基于分治策略的排序算法,它将大问题分解为小问题来解决。首先将数组分为两个相等或近乎相等的部分,然后对每一部分递归地进行排序,最后将结果合并。这种算法的时间复杂度为O(n log n),稳定性好,...
选择堆积排序法是一种高效的排序算法,适用于大规模的数据结构。该算法使用堆积结构来存储数据,并对堆积结构进行排序。选择堆积排序法的时间复杂度为O(nlogn),因此非常适合大规模数据的排序。 在软件技术基础中,...
在IT领域,排序算法是计算机科学中的基础但至关重要的概念,尤其在数据处理和算法设计中扮演着核心角色。本文将深入探讨标题中提到的几种基于比较的排序算法:选择排序、插入排序、归并排序、快速排序、堆排序、冒泡...
常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结