热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

冒泡排序,快速排序,归并排序,选择排序,插入排序,堆排序

冒泡:publicclassBubbleSort{publicstaticvoidmain(String[]orgs){int[]a{2,1,10,2,8,6,7,20};for

冒泡:

public class BubbleSort {
public static void main(String[] orgs){
int[] a = {2,1,10,2,8,6,7,20};
for(int i = 0 ; i for(int j = 1 ; j <= a.length - 1 - i; j++){
if(a[j] int temp = a[j];
a[j] = a[j-1];
a[j - 1] = temp;
}
}
}

for(int foo : a){
System.out.print(foo + " ");
}
}
}

快速排序:

public class QuickSort {
public int partition(int[] array,int start,int end){
int pivot = array[start];
while(start while(start pivot){
end --;
}
if(start array[start] = array[end];
}

while(start start ++;
}
if(start array[end] = array[start];
}
}
array[start] = pivot;
return start;
}

public void quicksort(int[] array,int start,int end){
if(array == null || array.length<=1){
return;
}
if(start int p = partition(array, start, end);
quicksort(array,start,p - 1);
quicksort(array,p + 1,end);
}
}

public static void main(String[] orgs){
QuickSort qs = new QuickSort();
int[] a = {2,1,10,2,8,6,7,20};
qs.quicksort(a, 0, a.length - 1);
for(int foo : a){
System.out.print(foo + " ");
}
}
}

归并排序:

public class MergeSort {
public void merge(int[] array,int[] temp,int start,int mid, int end){
int i = start;
int j = mid + 1;
for(int k= start; k <= end; k++){
temp[k] = array[k];
}
while(i <= mid && j <= end){
if(temp[i] <= temp[j]){
array[start++] = temp[i];
i++;
}else{
array[start++] = temp[j];
j++;
}
}
while(i <= mid){
array[start++] = temp[i++];
}
while(j <= end){
array[start++] = temp[j++];
}
}

public void mergesort(int[] array,int[] temp,int start,int end){
if(array == null || array.length <= 1){
return;
}
if(start int mid = start + (end - start)/2 ;
mergesort(array,temp,start,mid);
mergesort(array,temp,mid+1,end);
merge(array,temp,start,mid,end);
}
}


public static void main(String[] orgs){
MergeSort ms = new MergeSort();
int[] a = {2,1,10,2,8,6,7,20};
int[] temp = new int[a.length];
ms.mergesort(a, temp, 0, a.length - 1);
for(int foo : a){
System.out.print(foo + " ");
}
}
}

堆排序:

public class HeapSort {
public void heapify(int[] array,int start,int end){
int length = end;
int lchild = 2*start + 1;
int rchild = 2*start + 2;
int min = start;
if(lchild array[lchild]){
min = lchild;
}
if(rchild array[rchild]){
min = rchild;
}

if(start != min){
int temp = array[min];
array[min] = array[start];
array[start] = temp;
heapify(array,min,end);
}
}

public int extractMin(int[] array,int length){
int ret = Integer.MIN_VALUE;
if(array != null && array.length > 0){
ret = array[0];
array[0] = array[length];
}
return ret;
}

public void swim(int[] array,int length){
if(length for(int i = length; i > 0;i = i / 2){
if(array[i] int temp = array[i];
array[i] = array[i/2];
array[i/2] = temp;
}
}
}
}



public static void main(String[] orgs){
int[] a = {2,1,10,2,8,6,7,20};
HeapSort hs = new HeapSort();
int length = a.length - 1;
hs.heapify(a,0,length);
while(length >= 0){
System.out.print(hs.extractMin(a,length) + " ");
hs.heapify(a,0,--length);
}

}
}

插入排序:

public class InsertSort {
public static void main(String[] orgs){
int[] a = {2,1,10,2,8,6,7,20};
for(int i = 1 ; i for(int j = i; j > 0 && (a[j] int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}

for(int foo : a){
System.out.print(foo + " ");
}
}
}

选择排序:

public class SelectSort {
public static void main(String[] orgs){
int[] a = {2,1,10,2,8,6,7,20};
int min = 0;
for(int i = 0; i min = i;
for(int j = i + 1;j if(a[j] min = j;
}
}
if(i != min){
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}

for(int foo : a){
System.out.print(foo + " ");
}
}
}




推荐阅读
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Java 中 Writer flush()方法,示例 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • Java 类成员初始化顺序与数组创建
    本文探讨了Java中类成员的初始化顺序、静态引入、可变参数以及finalize方法的应用。通过具体的代码示例,详细解释了这些概念及其在实际编程中的使用。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • IneedtofocusTextCellsonebyoneviaabuttonclick.ItriedlistView.ScrollTo.我需要通过点击按钮逐个关注Tex ... [详细]
  • MQTT技术周报:硬件连接与协议解析
    本周开发笔记重点介绍了在新项目中使用MQTT协议进行硬件连接的技术细节,涵盖其特性、原理及实现步骤。 ... [详细]
  • 本文详细介绍了如何构建一个高效的UI管理系统,集中处理UI页面的打开、关闭、层级管理和页面跳转等问题。通过UIManager统一管理外部切换逻辑,实现功能逻辑分散化和代码复用,支持多人协作开发。 ... [详细]
  • 本文探讨了如何在给定整数N的情况下,找到两个不同的整数a和b,使得它们的和最大,并且满足特定的数学条件。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 探讨如何通过编程技术实现100个并发连接,解决线程创建顺序问题,并提供高效的并发测试方案。 ... [详细]
author-avatar
opheliamaizi
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有