随笔分类 - 算法
摘要:给出一个数组,要求查找出这个数组中按顺序排第K大的数字。思路:利用快速排序的思想,把数组中的元素分治,并计算中间值的位置,如果是K,则这个数就是第K大的数字,如果比K小,那么再次利用快速排序分治中值以后的数据,如果比K大,则排序前面的数字,直到找到K的位置。下面给出C++实现的代码:#include <cstdlib>
#include <iostream> using namespace std; int partition(int data[],int first,int last) //¿ìËÙÅÅ
阅读全文
摘要:排序算法无疑是学习数据结构中的重点内容,本文将给出排序算法的汇总。下面是具体的实现:#include<stdio.h>
#include<stdlib.h>
#include<time.h> #define N 1000000 int Array[N];
int Temp[N]; //1、冒泡排序
void BubbleSort(int a[],int n){ int i,j; int temp; int tag; for(i=n-1;i>0;i--){ tag = 0; for(j=0;j<i;j++) ...
阅读全文
摘要:在排序算法中,冒泡排序是一个很经典的算法,最初的冒泡排序一直要运行n-1次,但是其中有些事不必要的操作,例 如,当没有两个数据发生交换时,就可以结束运行。 本文介绍的一种方法是对上述条件的改进,即不仅对尾数据进行条件判断,同时还对头数据进行条件判断,当头数据不发生交换时需要完成一些改进,下面给出实现的源代码:#include <cstdlib>
#include <iostream> using namespace std; void exchange(int& a,int& b)
{
int temp;
temp=a;
a=b;
b=temp; }
v
阅读全文
摘要:我们学数据结构的时候会学到多种排序算法,基本上都是基于比较的排序,下面的这个排序算法并不是基于比较,确切的说它是基于cpu调度算法实现的,这个算法的作者称之为--睡眠排序。 它的基本思想是,对一组数据进行排序,不能存在负数值,这个数是多大,那么就在线程里睡眠它的10倍再加10,不是睡眠和它的数值一样大的原因是,当数值太小时,误差太大,睡眠的时间不比输出的时间少,那么就会存在不正确的输出结果。 下面给出JAVA版本的代码,其中包含注释:public class SleepSort { public static void main(String[] args) { ...
阅读全文

浙公网安备 33010602011771号