单链表代码
#include
#include
#include
using namespace std;
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
void print(LNode *L){
for(LNode *p=L;p!=NULL;p=p->next){
cout << p->data << " ";
}
cout << endl;
}
int main(){
LinkList L=new LNode;
L->next=NULL;
L->data=1;
print(L);
LinkList a=new LNode;
a->next=NULL;
a->data=2;
L->next=a;
print(L);
LinkList b=new LNode;
b->next=NULL;
b->data=3;
a->next=b;
print(L);
LinkList c=new LNode;
c->next=NULL;
c->data=4;
c->next=L->next;
L->next=c;
print(L);
c->next=c->next->next;
free(a);
print(L);
LNode *p=L;
L=L->next;
free(p);
print(L);
return 0;
}
void One(List &a,List &b,List &c){
pa=a->next;
pb=b->next;
pc=c=pa;
while(pa&&pb){
if(pa->data>pb->data){
pc->next=pb;
pc=pc->next;
pb=pb->next;
}
else if(pa->data<pb->data){
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
else {
pc->next=pa;
pc=pc->next;
u=pb;
pa=pa->next;
pb=pb->next;
free(u);
}
}
while(pa) {
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
while(pb) {
pc->next=pb;
pc=pc->next;
pb=pb->next;
}
free(pb);
}
void Two(List &a,List &b,List &c){
pa=a->next;
pb=b->next;
c=pc=a;
c->next=NULL;
while(pa&&pb){
if(pa->data<=pb->data){
u=pa;
u->next=c->next;
c->next=u;
pa=pa->next;
}
else if(pa->data>pb->data){
u=pb;
u->next=c->next;
c->next=u;
pb=pb->next;
}
}
while(pa) {
u=pa;
u->next=c->next;
c->next=u;
pa=pa->next;
}
while(pb){
u=pb;
u->next=c->next;
c->next=u;
pb=pb->next;
}
free(b);
}
void Three(List &a,List &b,List &c){
pa=a->next;
pb=b->next;
c=pc=a;
while(pa&&pb){
if(pa->data>pb->data){
u=pb;
pb=pb->next;
free(u);
}
else if(pa->data<pb->data){
u=pa;
pa=pa->next;
free(u);
}
else {
u=pb;
pc->next=pa;
pc=pc->next;
pa=pa->next;
pb=pb->next;
free(u);
}
}
while(pa){
u=pa;
pa=pa->next;
free(u);
}
while(pb){
u=pb;
pb=pb->next;
free(u);
}
pc->next=NULL;
free(b);
}
void Four(List &a,List &b,List &c){
pa=a->next;
pb=b->next;
pre=a;
int n=0;
while(pa&&pb){
if(pa->data==pb->data){
pre->next=pa->next;
u=pa;
pa=pa->next;
pb=pb->next;
free(u);
}
if(pa->data>pb->data){
pb=pb->next;
}
else {
n++;
pre=pa;
pa=pa->next;
}
}
while(pa){
n++;
pa=pa->next;
}
while(pb){
u=pb;
pb=pb->next;
free(u);
}
free(b);
}
void Five(List &a){
b=pb=a;
pa=a->next;
c=new List();
pc=c;
c->next=NULL;
while(pa){
if(pa->data<0){
pb->next=pa;
pb=pb->next;
pa=pa->next;
}
else {
pc->next=pa;
pc=pc->next;
pa=pa->next;
}
}
}
void six(List a){
pmax=a->next;
pa=a->next;
while(pa){
if(pa->data>pmax->data){
pmax=pa;
}
pa=pa->next;
}
return pmax->data;
}
void seven(List &a){
pa=a->next;
pc=c=a;
c->next=NULL;
while(pa){
u=pa;
pa=pa->next;
u->next=c->next;
c->next=u;
}
}
void eight(List &a,int mink,int maxk){
pa=a->next;
pre=a;
while(pa){
if(pa->data>mink&&pa->data<maxk){
pre->next=pa->next;
u=pa;
pa=pa->next;
delete u;
}
else pa=pa->next;
}
}

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
排序算法
#include
#include
#include
using namespace std;
const int N=1e5+10;
int q[N];
int w[N],s[N];
int n,sz;
void insert_sort(){
for(int i=0;i<n;i++){
int t=q[i],j=i;
while(j>0&&q[j-1]>t){
swap(q[j],q[j-1]);
j--;
}
q[j]=t;
}
}
void binary_search_insert_sort(){
for(int i=0;i<n;i++){
int t=q[i];
if(t>=q[i-1]){
q[i]=t;
continue;
}
int l=0,r=i;
while(l<r){
int mid=l+r>>1;
if(q[mid]>t) r=mid;
else l=mid+1;
}
for(int j=i-1;j>=r;j--){
q[j+1]=q[j];
}
q[r]=t;
}
}
void bubble_sort(){
for(int i=0;i<n-1;i++){
bool has_swap=false;
for(int j=n-1;j>i;j--){
if(q[j]<q[j-1]) {
swap(q[j],q[j-1]);
has_swap=true;
}
}
if(!has_swap) break;
}
}
void select_sort(){
for(int i=0;i<n-1;i++){
int k=i;
for(int j=i+1;j<n;j++){
if(q[j]<q[k]){
k=j;
}
}
swap(q[k],q[i]);
}
}
void shell_sort(){
for(int d=n/3;d;d = d == 2 ? 1 : d / 3){
for(int start=0;start<d;start++){
for(int i=start+d;i<n;i+=d){
int t=q[i],j=i;
while(j>start&&t<q[j-d]){
swap(q[j],q[j-d]);
j=j-d;
}
q[j]=t;
}
}
}
}
void quick_sort(int l,int r){
if(l>=r) return;
int i=l-1,j=r+1,x=q[(l+r)>>1];
while(i<j){
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j) swap(q[i],q[j]);
}
quick_sort(l,j);
quick_sort(j+1,r);
}
void down(int t){
int u=t;
if(u*2<=sz&&q[u*2]>q[t]) t=u*2;
if(u*2+1<=sz&&q[u*2+1]>q[t]) t=u*2+1;
if(u!=t){
swap(q[u],q[t]);
down(t);
}
}
void heap_sort(){
sz=n;
for (int i = n / 2; i; i -- ) down(i);
for(int i=0;i<n-1;i++){
swap(q[1], q[sz]);
sz -- ;
down(1);
}
}
void merge_sort(int l,int r){
if(l>=r) return;
int mid=l+r>>1;
merge_sort(l,mid),merge_sort(mid+1,r);
int i=l,j=mid+1,k=0;
while(i<=mid&&j<=r){
if(q[i]<=q[j]) w[k++]=q[i++];
else w[k++]=q[j++];
}
while(i<=mid) w[k++]=q[i++];
while(j<=r) w[k++]=q[j++];
for(i=l,j=0;i<=r;i++,j++) q[i]=w[j];
}
void bucket_sort(){
for(int i=0;i<n;i++) s[q[i]]++;
for(int i=1;i<N;i++) s[i]=s[i]+s[i-1];
for(int i=n-1;i>=0;i--) w[--s[q[i]]]= q[i];
for(int i=0;i<n;i++) q[i]=w[i];
}
int main(){
cin >> n;
for(int i=0;i<n;i++){
cin >> q[i];
}
bucket_sort();
for(int i=0;i<n;i++){
cout << q[i] << " ";
}
return 0;
}

- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173