ESP8266 ILI9341 display support code with printf sources, wire-frame viewer and custom fonts  1.0
ESP8266ILI9341DisplayProject
sort.c
Go to the documentation of this file.
1 
24 #include "user_config.h"
25 
26 #include "sort.h"
27 
28 
30 void heapify(int *v, int size, int root)
31 {
32  int largest = root;
33  int left = (root<<1) + 1;
34  int right = (root<<1) + 2;
35  int tmp;
36 
37  // If left child is larger than root
38  if (left < size && v[left] > v[largest])
39  largest = left;
40 
41  // If right child is larger than largest so far
42  if (right < size && v[right] > v[largest])
43  largest = right;
44 
45  // If largest is not root
46  if (largest != root)
47  {
48  // swap
49  tmp = v[root];
50  v[root] = v[largest];
51  v[largest] = tmp;
52  heapify(v, size, largest);
53  }
54 }
55 
57 void heapsort(int *v, int size)
58 {
59  int root;
60  int tmp;
61 
62  for(root = size / 2 - 1; root >= 0; --root)
63  {
64  heapify(v, size, root);
65  }
66 
67  // One by one extract an element from heap
68  for (root=size-1; root>=0; --root)
69  {
70  // swap
71  tmp = v[0];
72  v[0] = v[root];
73  v[root] = tmp;
74  heapify(v, root, 0);
75  }
76 }
77 
79 void insert_sort(uint16_t *v, int size)
80 {
81  int i,j;
82  uint16_t tmp;
83 
84  for (i = 1; i < size; ++i)
85  {
86  tmp = v[i];
87  for (j = i; j >= 1 && tmp < v[j - 1]; --j)
88  v[j] = v[j - 1];
89  v[j] = tmp;
90  }
91 }
unsigned short uint16_t
Definition: send.c:18
Master include file for project Includes all project includes and defines here.
MEMSPACE void insert_sort(uint16_t *v, int size)
Definition: sort.c:79
MEMSPACE void heapsort(int *v, int size)
Definition: sort.c:57
Integer sort.
MEMSPACE void heapify(int *v, int size, int root)
Definition: sort.c:30
#define MEMSPACE
Definition: cpu.h:25