【1】冒泡排序(面试常问)
1、普通
#include <stdio.h>
void bubble(int a[],int size)
{
int i,j,temp=0;
for(i=0;i<size-1;i++){
for(j=0;j<size-i-1;j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main(int argc, const char *argv[])
{
int i;
int a[6] = {4,3,6,2,8,5};
bubble(a,6);
for(i=0;i<6;i++)
printf("%d ",a[i]);
putchar(10);
return 0;
}
2、优化
#include <stdio.h>
#include <stdbool.h>
void bubble(int a[],int size)
{
int i,j,temp=0;
for(i=0;i<size-1;i++){
bool swap = false;
for(j=0;j<size-i-1;j++){
if(a[j] > a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
swap = true;
}
}
if(!swap)
break;
}
}
【2】选择排序
#include <stdio.h>
void select(int a[],int size)
{
int i,j,k=0,temp=0;
for(i=0;i<size-1;i++){
k=i;
for(j=i+1;j<size;j++){
if(a[k] > a[j]){
k=j;
}
}
if(k != i){
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
int main(int argc, const char *argv[])
{
int i;
int a[6] = {4,3,6,2,8,5};
select(a,6);
for(i=0;i<6;i++)
printf("%d ",a[i]);
putchar(10);
return 0;
}
【3】归并排序
#include <stdio.h>
#define A_N 5
#define B_N 7
#define C_N (A_N+B_N)
int main(int argc, const char *argv[])
{
int i = 0,j = 0,k=0;
int a[A_N] = {1,3,5,7,9};
int b[B_N] = {2,4,6,8,10,11,12};
int c[C_N] = {0};
while(i<A_N && j<B_N){
while(a[i] < b[j] && i<A_N){
c[k++] = a[i++];
}
while(i<A_N && a[i] > b[j] && j<B_N){
c[k++] = b[j++];
}
}
while(i == A_N && j<B_N){
c[k++] = b[j++];
}
while(j==B_N && i<A_N){
c[k++] = a[i++];
}
for(k=0; k<C_N; k++){
printf("%d\t",c[k]);
}
puts("");
return 0;
}
【4】快速排序
#include <stdio.h>
void quick_sort(int arr[],int left,int right)
{
int i = left,j = right;
int temp=0;
int pivot;
pivot = arr[(left + right)/2];
while(i <= j){
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if(i <= j){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if(left < j)
quick_sort(arr,left,j);
if(i < right)
quick_sort(arr,i,right);
}
int main(int argc, const char *argv[])
{
int arr[10] = {4,5,7,3,8,1,6,9,0,2};
int i,lenth;
lenth = sizeof(arr)/sizeof(arr[0]);
quick_sort(arr,0,lenth-1);
printf("排序后的结果是> ");
for(i=0;i<lenth;i++){
printf("%d ",arr[i]);
}
putchar(10);
return 0;
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200804105453522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RvbHBoaW5fMDkyMw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200804105512241.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RvbHBoaW5fMDkyMw==,size_16,color_FFFFFF,t_70)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)