这里并没有给出完整的例子,只是一些代码块.我说的是最核心的一些部分.
1、冒泡排序,这应该是性能最差的一种排序,不提倡用.
- public void bubbleSort()
- {
- int out, in;
- for(out=nElems-1; out>1; out--)
- for(in=0; in<out; in++)
- if( a[in] > a[in+1] )
- swap(in, in+1);
- }
交换的方法:
- private void swap(int one, int two)
- {
- long temp = a[one];
- a[one] = a[two];
- a[two] = temp;
- }
小结:冒泡排序的交换和比较操作的次数都和N2成正比,排序需要O(N2)的时间级别.
2、选择排序的算法:
- public void selectionSort()
- {
- int out, in, min;
-
- for(out=0; out<nElems-1; out++)
- {
- min = out;
- for(in=out+1; in<nElems; in++)
- if(a[in] < a[min] )
- min = in;
- swap(out, min);
- }
- }
小结:选择排序与冒泡排序执行了相同次数的比较N*(N-1)/2。当N值比较大时,比较的次数是主要,这时候采用选择排序性能也不好;当N值比较小的时候,选择排序的性能还是比较好的.
3、插入排序:性能比冒泡排序,选择排序好,在局部有序的情况下,插入排序的性能很好.
- public void insertionSort()
- {
- int in, out;
-
- for(out=1; out<nElems; out++)
- {
- long temp = a[out];
- in = out;
- while(in>0 && a[in-1] >= temp)
- {
- a[in] = a[in-1];
- --in;
- }
- a[in] = temp;
- }
- }
-
小结:如果数组是基本有序或是有序了,这时候用插入排序只需要O(N)的时间。但如果对于逆序的数据,性能并不比冒泡排序快,这一点需要注意.
下一次会介绍多几种排序的,有空且心情好的时候再过来写写。
分享到:
相关推荐
数据结构一元多项式运算 C++实现 一、设计简要说明 本程序“一元多项式运算”是以实现...通过一个学期对数据结构的学习,使我对其有了很大的了解,也对 C++进行了温习和了解;这个学期的寒假期间,我们每个人都做了。
学生在课程设计过程中,通过重新温习C语言和应用数据结构知识,提高了编程技能,学会了独立思考和解决问题。同时,也体验到了团队合作的重要性,增强了动手操作和问题解决的能力。在反思中,学生表示虽然遇到困难,...
1. 数据查询:包括SELECT语句的基本用法,如选择特定列、使用WHERE子句过滤数据、GROUP BY进行数据分组、HAVING对分组后的数据进行过滤,以及使用ORDER BY进行排序等。 2. 数据插入:INSERT语句用于向表中插入新...
数据结构是软件设计师考试的基础知识之一,需要掌握相关的排序算法,可以通过网上的一些排序算法动态图示的帖子进行高效学习。上午的考查部分占比5分左右。 第六周:算法设计 在第六周,需要学习《软件设计官方...
- 数据结构和算法的优化:对时间和空间复杂度的优化,如何根据特定问题选择合适的算法和数据结构。 - 竞赛中典型问题的分析和解决:可能包括图论问题、数论问题、字符串处理等。 - 算法竞赛的规则和技巧:竞赛环境下...
3. **算法**:包括排序算法(如冒泡、选择、插入、快速、归并等)、查找算法(如顺序查找、二分查找等)以及递归和回溯等。 4. **操作系统原理**:进程与线程的概念,内存管理,I/O模型,以及操作系统提供的系统调用...
零基础学习算法,共分为两部分——...及想要温习算法的老朋友们,内容包含了简单、 复杂数据结构、排序、 查找、 算法问题和数学问题以及经典算法问题等。另外还有信息学奥赛试题精解也很不错的!希望大家分享学习!
机试部分主要测试考生对C语言的理解和应用能力,包括但不限于语法、逻辑控制、函数运用、数据结构、错误调试等多方面技能。 在提供的压缩包文件中,"29次机试试题.doc"很可能是本次考试的实际题目,包含了若干编程...
2. **算法**:包括排序算法(快速排序、归并排序、冒泡排序等)、搜索算法(二分查找、深度优先搜索、广度优先搜索等)、动态规划、贪心算法、回溯法等。理解和熟练运用这些算法能提高解决复杂问题的能力。 3. **...
今天的任务是实现一个简单的排序算法,包括界面、数据压入堆栈、简单冒泡排序和堆排序输出。通过这个任务,实习生快速地熟悉了 C# 语言,并加深了对冒泡排序和堆排序的理解。 Daily Work 2中,实习生继续改进昨天的...
2. 数组与集合:理解数组和集合的区别,熟练运用ArrayList、LinkedList、HashMap等数据结构。 3. 控制流:掌握if-else、switch、for、while等语句的使用,以及三元运算符的应用。 4. 函数与方法:理解函数的参数传递...
零基础学习算法,共分为两部分——...及想要温习算法的老朋友们,内容包含了简单、 复杂数据结构、排序、 查找、 算法问题和数学问题以及经典算法问题等。另外还有信息学奥赛试题精解也很不错的!希望大家分享学习!
从简单的选择特定列、行到复杂的联接操作,再到聚合函数(如COUNT、SUM、AVG、MAX、MIN)的应用,读者将掌握如何从数据中提取所需信息。此外,还会讲解子查询,这是一种嵌套在其他查询中的查询,用于获取更复杂的...
14.7.3 函数传参实例三——用二分算法查找数据 14.7.4 函数传参实例四——判断数组是否按照顺序排列 14.7.5 函数传参实例五——判断数组排列方式后执行不同的函数 14.8 数组在对象中的传参 14.9 对象数组 14.10 在...
14.7.3 函数传参实例三——用二分算法查找数据 14.7.4 函数传参实例四——判断数组是否按照顺序排列 14.7.5 函数传参实例五——判断数组排列方式后执行不同的函数 14.8 数组在对象中的传参 14.9 对象数组 14.10...