排序面试

public class sorttest {

public static void main(String[] args){
int[] ss=new int[100];
for(int i=0;i<100;i++){
int ii=(int)(Math.random()*100+1);
ss[i]=ii;
for(int h=0;h<i;h++){
if(ss[i]==ss[h]){
i--;
break;
}
}
}
/*for(int j:ss){
System.out.print(" "+j);
}*/
sorttest ts=new sorttest();
System.out.print("顺序为:");
ts.bubbleSort(ss, "asc");
System.out.print("道序为:");
ts.bubbleSort(ss, "desc");
}
public  void bubbleSort(int[] source, String sortType) {
        if (sortType.equals("asc")) { //正排序,从小排到大
            for (int i = source.length - 1; i > 0; i--) {
                for (int j = 0; j < i; j++) {
                    if (source[j] > source[j + 1]) {
                       // swap(source, j, j + 1);
                    int tmp=source[j];
                    source[j]=source[j+1];
                    source[j+1]=tmp;
                    }
                }
            }
        } else if (sortType.equals("desc")) { //倒排序,从大排到小
            for (int i = source.length - 1; i > 0; i--) {
                for (int j = 0; j < i; j++) {
                    if (source[j] < source[j + 1]) {
                       // swap(source, j, j + 1);
                    int tmp=source[j];
                    source[j]=source[j+1];
                    source[j+1]=tmp;
                    }
                }
            }
        } else {
            System.out.println("您输入的排序类型错误!");
        }
        printArray(source);//输出冒泡排序后的数组值
    }
public void printArray(int[] source) {
        for (int i : source) {
            System.out.print(i + " ");
        }
        System.out.println();
    }
/*private void swap(int[] source, int x, int y) {
        int temp = source[x];
        source[x] = source[y];
        source[y] = temp;
    }*/

}

在Java基础排序面试中,可能会问到一些经典的排序算法实现以及它们的应用场景,比如数组、链表、字符串等各种数据结构的排序。以下是几个常见的面试题点: 1. **冒泡排序** (Bubble Sort): 简单易懂,适用于小规模数据或已近乎有序的数据。询问如何实现冒泡排序以及其时间复杂度。 2. **选择排序** (Selection Sort): 每次找到最小元素放在已排序部分的末尾,适用于空间复杂度有限的情况。可以提问其实现细节及最坏情况下的性能。 3. **插入排序** (Insertion Sort): 对于小规模或者接近有序的数据效率较高。讲解插入排序的工作原理和优化版本(如二分插入排序)。 4. **快速排序** (Quick Sort): 分治法的经典应用,平均时间复杂度低。可能会涉及递归实现,栈溢出处理以及何时会退化为O(n^2)。 5. **归并排序** (Merge Sort): 稳定排序,常用于外部排序。可以讨论其稳定性和拆分合并的过程。 6. **堆排序** (Heap Sort): 利用堆数据结构实现,适用于大数据量的排序。可能会考察如何建立最大/最小堆。 7. **稳定性** (Stability): 需解释什么是稳定的排序,哪些排序算法是稳定的,哪些不是。 8. **比较次数和交换次数**: 讨论各种排序算法的平均和最坏情况下比较和交换元素的次数。 9. **自适应排序** (Adaptive Sorting): 如计数排序、基数排序等特定类型的问题,适合非整数类型的数据。 10. **排序算法在实际场景中的选择**: 根据数据特点(大小、是否有重复、存储形式等)分析哪种排序算法更合适。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值