package book.oo.shape;
public class CoverHiderTest{
// 选择
public int[] sortASC(int[] intArray){
if(intArray==null){
return null;
}
int[] srcDatas=(int[])intArray.clone();
int size=srcDatas.length;
for(int i=0;i<size;i++){
for(int j=i;j<size;j++){
if(srcDatas[i]>srcDatas[j]){
swap(srcDatas,i,j);
}
}
}
return srcDatas;
}
private void swap(int[] data,int src,int desc){
int temp=data[src];
data[src]=data[desc];
data[desc]=temp;
}
// 待测试中;换一种方法;
public int[] sortASC2(int[] intArray){
if(intArray==null){
return null;
}
int[] srcDatas=(int[])intArray.clone();
boolean changedPosition=true;
int comparedTimes=0;
int maxComparedTimes=srcDatas.length-1;
while((comparedTimes<maxComparedTimes)&&changedPosition){
for(int i=0;i<(maxComparedTimes-comparedTimes);i++){
changedPosition=false;
if(srcDatas[i]>srcDatas[i+1]){
swap(srcDatas,i,i+1);
changedPosition=true;
}
}
comparedTimes++;
}
return srcDatas;
}
// 插入
public int[] sortASC3(int[] intArray){
if(intArray==null){
return null;
}
int[] srcDatas=(int[])intArray.clone();
int size=srcDatas.length;
int temp=0;
int index=0;
for(int i=1;i<size;i++){
temp=srcDatas[i];
index=i;
while((index>0)&&(temp<srcDatas[index-1])){
srcDatas[index]=srcDatas[index-1];
index--;
}
srcDatas[index]=temp;
}
return srcDatas;
}
// 快速排序...
public static void main(String[] args){
//测试排序;
int[] arr=new int[]{1,8,9,2,6,4,3,0,5,7};
CoverHiderTest test=new CoverHiderTest();
int[] arr1=test.sortASC(arr);
for(int i=0;i<arr1.length;i++){
System.out.println(arr1[i]);
}
int[] arr2=test.sortASC2(arr);
for(int i=0;i<arr2.length;i++){
System.out.println(arr2[i]);
}
int[] arr3=test.sortASC3(arr);
for(int i=0;i<arr3.length;i++){
System.out.println(arr3[i]);
}
Child child=new Child();
System.out.println(child.name+child.age+child.kind);
Parent parent=child;
System.out.println(parent.name+parent.age+parent.kind);
System.out.println(child.getParentName());
System.out.println(child.getParentKind());
child.getName();//C2
child.getKind();//C1
parent.getName();//C2
parent.getKind();//P1
}
}
分享到:
相关推荐
常见的排序算法大致分为四类: 1.插入排序:插入排序(insert.c)、shell排序(shellsort.c) 2.选择排序:选择排序(selectsort....3.交换排序:冒泡排序(bubblesort.c)、快速排序(quicksort.c) 4.归并排序(mgergesort.c)
1. 空间复杂度为 O(1) 的简单排序方法包括直接插入、冒泡和简单选择排序,以及堆排序。 2. 空间复杂度为 O(logn) 的只有快速排序,为栈所需的辅助空间。 3. 空间复杂度为 O(n) 的只有归并排序。 4. 空间复杂度为 O...
本文总结了各种排序实例,包括直接插入排序、shell 排序、选择排序、冒泡排序、快速排序、归并排序等,并对每种排序算法的特点、优缺点和应用场景进行了分析。 1. 排序算法的分类 根据平均时间复杂度,可以将排序...
内部排序算法的性能分析研究了多种排序方法,主要包括插入排序、交换排序、选择排序和归并排序这四类。具体到每类排序中,又可细分出不同的子类算法: - 插入排序:包括直接插入排序和希尔排序。 - 交换排序:包括...
【Java 常用排序算法】排序是编程中常见的任务之一,主要分为四类:插入排序、交换排序、选择排序和归并排序。此外,还有分配排序中的基数排序。以下是对这些排序算法的详细说明: 1. **直接插入排序**: 直接插入...
例如,直接插入排序和冒泡排序是稳定的,而快速排序和直接选择排序则是不稳定的。 内部排序是在内存中完成的排序,适用于数据量相对较小的情况。相反,外部排序涉及大量的数据,需要在内外存之间进行交互,通常用于...
快速排序通常使用分治策略,通过选择一个基准值并重新排列数组,将大问题分解为小问题来解决。 另一方面,希尔排序是经典的排序算法之一,尽管其平均时间复杂度并非最优,但它采用了插入排序的改进版本,通过增量...
快速排序是一种高效的排序算法,使用分治策略,通过一趟排序将待排序记录分割成独立的两部分。 ##### 6.6 堆排序 堆排序利用堆这种数据结构所设计的一种排序算法,分为创建初始堆和反复调整堆两个步骤。 ##### 6.7...
- 快速排序:通过分治法来排序,时间复杂度平均为\(O(n\log n)\),不稳定。 - 归并排序:也是通过分治法来排序,时间复杂度为\(O(n\log n)\),稳定。 - 堆排序:利用堆这种数据结构来排序,时间复杂度为\(O(n\log...
常用的排序算法有直接插入排序、冒泡排序、快速排序、堆排序等。 8. 栈是一种常用的数据结构,它可以用来实现递归算法。栈的基本操作包括入栈、出栈、栈顶元素等。 9. 链表是一种常用的数据结构,它可以用来实现...
- **快速排序**:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 - **归并排序**:将两个(或两个以上)...
排序是数据处理的核心任务,常见的排序算法有直接插入排序、冒泡排序、选择排序、快速排序、堆排序、归并排序和基数排序等。不同的排序算法有不同的时间复杂度和稳定性特点,如快速排序是不稳定的,而归并排序是稳定...
内部排序涵盖了冒泡排序、选择排序、插入排序、快速排序、归并排序等多种方法。 8. **动态存储管理**:第八章涉及内存分配与回收,介绍了动态内存分配的策略,如首次适配、最佳适配和最差适配,以及内存碎片问题。 ...
冒泡排序,快速排序,选择排序,归并排序,希尔排序,堆排序,插入排序中哪些排序是不稳定的,为什么?** - **答案解析:** 在这些排序算法中,不稳定的排序包括**冒泡排序、选择排序、希尔排序和堆排序**。这些...
- ArrayList基于动态数组,提供了快速随机访问,但在插入和删除元素时效率较低。 - Vector与ArrayList类似,但它是线程安全的,因此性能稍低。 - LinkedList基于双向循环链表,适合频繁插入和删除,但随机访问...
常见的排序算法有冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序等。 - **查找算法**:查找算法是在数据集合中找到特定元素的过程。常见的查找算法有顺序查找、二分查找、哈希查找等。 - **.NET框架中...
排序算法用于将数据按照特定规则排列,包括插入排序、冒泡排序、选择排序、希尔排序、快速排序、堆排序、归并排序、基数排序等多种方法,每种算法的时间复杂度和稳定性不同。 通过对这些知识点的学习,可以系统地...
数据结构山东大学考题 本资源摘自山东大学的一份数据结构考试题目,涵盖了数据结构的基本概念、链表、栈、队列、二叉树、图等多个方面的...若对其进行快速排序,则平均时间复杂度是 O(n log n)。 三、解答题 (略)