Git Product home page Git Product logo

prioqueue's Introduction

priority-queue

Build Status GoDoc

Binary-heap based priority queue for Go. Elements are insrted using Add, and the maximum element is removed using RemoveMax, observed with Peek.

Example

package main

import (
	"fmt"

	"github.com/kseo/prioqueue"
)

func intCmpFunc(a, b interface{}) int {
	if a.(int) < b.(int) {
		return -1
	} else if a.(int) > b.(int) {
		return 1
	} // else
	return 0
}

func sort(xs []int) []int {
	var result []int
	elements := make([]interface{}, len(xs))
	for i, d := range xs {
		elements[i] = d
	}
	pq := prioqueue.NewPriorityQueue(elements, intCmpFunc)
	for !pq.IsEmpty() {
		max, _ := pq.RemoveMax()
		result = append(result, max.(int))
	}
	return result
}

func main() {
	xs := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5, 9}
	fmt.Printf("%v\n", sort(xs))
}

prioqueue's People

Stargazers

Kwang Yul Seo avatar Mateusz "Serafin" Gajewski avatar

Watchers

James Cloos avatar Kwang Yul Seo avatar

prioqueue's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.