File tree Expand file tree Collapse file tree 1 file changed +108
-0
lines changed
code/sorting/src/bubble_sort Expand file tree Collapse file tree 1 file changed +108
-0
lines changed Original file line number Diff line number Diff line change 1+ // bubble sort iterative
2+ #include < iostream>
3+ class Node
4+ {
5+ public:
6+ int data;
7+ Node *next;
8+ Node (int data)
9+ {
10+ this ->data = data;
11+ this ->next = NULL ;
12+ }
13+ };
14+
15+ using namespace std ;
16+ int len (Node *head)
17+ {
18+ Node *temp = head;
19+ int i = 0 ;
20+ while (temp != NULL )
21+ {
22+ i++;
23+ temp = temp->next ;
24+ }
25+
26+ return i;
27+ }
28+ Node *bubbleSort (Node *head)
29+ {
30+ if (head == NULL || head->next == NULL )
31+ return head;
32+ int n = len (head) - 1 ;
33+ while (n--)
34+ {
35+ Node *prev = NULL ;
36+ Node *cur = head;
37+ while (cur->next != NULL )
38+ {
39+ if (cur->data >= cur->next ->data )
40+ {
41+
42+ if (prev == NULL )
43+ {
44+ Node *nxt = cur->next ;
45+ cur->next = nxt->next ;
46+ nxt->next = cur;
47+ prev = nxt;
48+ head = prev;
49+ }
50+
51+ else
52+ {
53+
54+ Node *nxt = cur->next ;
55+ prev->next = nxt;
56+ cur->next = nxt->next ;
57+ nxt->next = cur;
58+ prev = nxt;
59+ }
60+ }
61+ else
62+ {
63+
64+ prev = cur;
65+ cur = cur->next ;
66+ }
67+ }
68+ }
69+ return head;
70+ }
71+ Node *takeinput ()
72+ {
73+ int data;
74+ cin >> data;
75+ Node *head = NULL , *tail = NULL ;
76+ while (data != -1 )
77+ {
78+ Node *newnode = new Node (data);
79+ if (head == NULL )
80+ {
81+ head = newnode;
82+ tail = newnode;
83+ }
84+ else
85+ {
86+ tail->next = newnode;
87+ tail = newnode;
88+ }
89+ cin >> data;
90+ }
91+ return head;
92+ }
93+ void print (Node *head)
94+ {
95+ Node *temp = head;
96+ while (temp != NULL )
97+ {
98+ cout << temp->data << " " ;
99+ temp = temp->next ;
100+ }
101+ cout << endl;
102+ }
103+ int main ()
104+ {
105+ Node *head = takeinput ();
106+ head = bubbleSort (head);
107+ print (head);
108+ }
You can’t perform that action at this time.
0 commit comments