Advertisement
Guest User

pastebin

a guest
Nov 21st, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. #include "algorithm.h"
  2.  
  3.  
  4. //
  5. // Private
  6. //
  7.  
  8. //
  9. // Public
  10. //
  11. void bubble_sort(int *a, int n)
  12. {
  13.  
  14. int i,j,temp;
  15. for(i=0;i<n;i++){
  16.  
  17. for(j=i+1;j<n;j++){
  18. bool flag = false;
  19.  
  20. if(a[i] > a[j]){
  21.  
  22. temp = a[i];
  23. a[i] = a[j];
  24. a[j] = temp;
  25. flag = true;
  26. }
  27. if(!flag)
  28. return;
  29. }
  30. }
  31.  
  32. }
  33.  
  34. void insertion_sort(int *a, int n) { //times
  35.  
  36. int i,j,key;
  37. for(j=2;j<n;j++){
  38. key = a[j];
  39. i = j - 1; //n - 1
  40.  
  41. while(i >= 0 && a[i] > key){
  42. a[i + 1] = a[i];
  43. i = i - 1;
  44. }
  45. a[i + 1] = key;
  46. }
  47. }
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54. void quick_sort(int *a, int n) //skapa en egen med tre anrop för sen kalla på den härifrån?
  55. {
  56.  
  57.  
  58. if (n < 2)
  59. return;
  60.  
  61. int pivot = a[n - 1]; //pivot == mitten i arrayen
  62. int *left = a; //left pekar på pos 0 i början.
  63. int *right = a + n - 1; //right pekar på sista platsen i arrayen
  64. while (left <= right) {
  65. if (*left < pivot) {
  66. left++; //kommer fungera som att left respektive right jämför sina värden med pivot
  67. }
  68. else if (*right > pivot) {
  69. right--;
  70. }
  71. else {
  72. int temp = *left;
  73. *left = *right;
  74. *right = temp;
  75. left++;
  76. right--;
  77. }
  78. }
  79. quick_sort(a, right - a + 1);
  80. quick_sort(left, a + n - left);
  81.  
  82. }
  83.  
  84.  
  85. bool linear_search(const int *a, int n, int v)
  86. {
  87. int i;
  88. for(i = 0;i < n;i++){
  89. if(a[i] == v)
  90. return true;
  91. }
  92. return false;
  93. }
  94.  
  95. bool binary_search(const int *a, int n, int v){
  96.  
  97. bool retur = false;
  98. int low = 0;
  99. int high = n - 1;
  100. int mid;
  101. int found = 0;
  102. while (low <= high && !found)
  103. {
  104. mid = ( high - low ) / 2;
  105. if(a[mid] == v){
  106. found = 1;
  107. }
  108. else if( a[mid] > v){
  109. high = mid - 1;
  110.  
  111. }else{
  112. low = mid + 1;
  113.  
  114. }
  115. if(found == 1){
  116. retur = true;
  117. }else{
  118. retur = false;
  119. }
  120.  
  121.  
  122. }
  123. return retur;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement