冒泡排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void print_list(int* List, int size)
{
for(int i = 0; i< size;i++)
{
printf("%d ",List[i]);
}
printf("\n");
}
void Bubble_Sort(int* List,int size)
{
for(int i = 0; i< size-1; i++)
{
for(int j = 0; j< size-i-1; j++)
{
if(List[j] < List[j+1])
{
int temp = List[j];
List[j] = List[j+1];
List[j+1] = temp;
}
}
}
}
int main()
{
srand((unsigned) time(NULL));
int List[10];
for(int i = 0; i< 5; i++)
{
int num = rand()%10+1;
printf("%d ",num);
List[i] = num;
}
printf("\n");
Bubble_Sort(List,5);
print_list(List,5);
return 0;
}
选择排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void secelt_sort(int* List, int size)
{
int index = 0;
for(int i = 0; i< size-1;i++)
{
int k = List[i];
int max = k;
for(int j = i+1; j< size; j++)
{
if(List[j] > max)
{
index = j;
max = List[j];
}
}
List[i] = max;
List[index] = k;
}
}
void print_list(int* list, int size)
{
for(int i = 0;i< size;i++)
{
printf("%d ",list[i]);
}
printf("\n");
}
int main()
{
srand((unsigned)time(NULL));
int List[10];
for(int i = 0; i< 10; i++)
{
int num = rand()%10+1;
printf("%d ", num);
List[i] = num;
}
printf("\n");
secelt_sort(List,10);
print_list(List,10);
return 0;
}
插入排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void print_list(int* list, int size)
{
for(int i = 0;i< size;i++)
{
printf("%d ",list[i]);
}
printf("\n");
}
void insert_sort(int* list, int size)
{
for(int i = 1; i< size; i++)
{
int temp = list[i];
int j = i-1;
while(j >= 0)
{
if(list[j] > temp)
{
int k = list[j];
list[j] = list[j+1];
list[j+1] = k;
}
j--;
}
}
}
int main()
{
srand((unsigned)time(NULL));
int List[10];
for(int i = 0; i< 10; i++)
{
int num = rand()%10+1;
printf("%d ", num);
List[i] = num;
}
printf("\n");
insert_sort(List, 10);
print_list(List,10);
return 0;
}
快速排序
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int Adj_Array(int* List, int left, int right)
{
int i = left;
int j = right;
int k = List[left];
while(i!=j)
{
while(i!=j && List[j] > k)
j--;
if(j > i)
{
List[i] = List[j];
i++;
}
while(i!=j && List[i] < k)
i++;
if(i < j)
{
List[j] = List[i];
j--;
}
}
List[i] = k;
return i;
}
void quick_sort(int* List, int left, int right)
{
if(left < right)
{
int temp = Adj_Array(List, left, right);
quick_sort(List, 0, temp);
quick_sort(List, temp+1, right);
}
}
void print_list(int* list, int size)
{
for(int i = 0;i< size;i++)
{
printf("%d ",list[i]);
}
printf("\n");
}
int main()
{
srand((unsigned)time(NULL));
int List[5];
for(int i = 0; i< 5; i++)
{
int num = rand()%10+1;
printf("%d ", num);
List[i] = num;
}
printf("\n");
quick_sort(List, 0, 4);
print_list(List,5);
return 0;
}
堆排序
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define parent(x) (x-1)/2
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
void create_heap(int* List, int size)
{
for(int i = 1; i< size;i++)
{
int child = i;
while(child > 0)
{
int root = parent(child);
if(List[child] > List[root])
swap(&List[child], & List[root]);
child = root;
}
}
}
void heap_sort(int* List, int size)
{
for(int i = size-1; i>= 0; i--)
{
swap(&List[0], &List[i]);
create_heap(List, i);
}
}
void print_heap(int* list, int size)
{
for(int i = 0; i< size; i++)
{
printf("%d ",list[i]);
}
printf("\n");
}
int main()
{
int list[5];
srand((unsigned)time(NULL));
for(int i = 0; i< 5;i++)
{
int num = rand()%10+0;
list[i] = num;
printf("%d ", num);
}
printf("\n");
create_heap(list,5);
print_heap(list, 5);
heap_sort(list, 5);
print_heap(list, 5);
}