C语言排序

来源:互联网 发布:远程端口修改 编辑:程序博客网 时间:2024/06/06 15:42

1.一般排序


#include <stdio.h>int main(){int num = 0;int array[10] = {15,8,2,16,9,54,52,11,25,3};int i,j,temp;  for (i = 0; i < 10; i++)    {     for(j = 9; j >= i;j--)       if(array[j]<array[i])         {           temp = array[j];           array[j] = array[i];           array[i] = temp;           num++;          }   }  for (i = 0;i <9 ;i++)   printf("%d,",array[i]);   printf("\n");   printf("num:%d\n",num);}

或者

#include <stdio.h>int main(){int num = 0;int array[10] = {15,8,2,16,9,54,52,11,25,3};int i,j,temp;for (i = 0; i < 10; i++){for(j = i+1; j <10i;j++)if(array[j]<array[i]){temp = array[j];array[j] = array[i];array[i] = temp;num++;}}for (i = 0;i <9 ;i++)printf("%d,",array[i]);printf("\n");printf("num:%d\n",num);}



2.改进的冒泡排序

<pre name="code" class="cpp">#include <stdio.h>#define false 0#define true 1int main(){  int num = 0;  int array[10] = {13,2,5,18,7,12,9,10,15,6};  int i,j,temp;  int flag = false;  for (i = 0; i < 10; i++)    {     flag = false;     for(j = 9; j >= i;j--)            if(array[j]<array[i])         {           temp = array[j];           array[j] = array[i];           array[i] = temp;           num++;           flag = true;          }       if(flag)        break;   }  for (i = 0;i <9 ;i++)   printf("%d,",array[i]);   printf("\n");   printf("num:%d\n",num);}

3.直接插入排序

#include <stdio.h>int main(void){  int num = 0;  int array[10] = {15,8,2,16,9,54,52,11,25,3};  int i,j,temp;  for (i = 1;i <= 9;i++)  {    if(array[i-1]>array[i])    {       temp = array[i];       j = i;       while(j>0&&array[j-1]>temp)        {          array[j] = array[j-1];          j--;         }         array[j] = temp;         num++;    }  }  for (i = 0;i <= 9;i++)  printf("array: %d\n",array[i]);  printf("num=%d\n",num);  printf("\n");}

4.快速排序

#include <stdio.h>static int num = 0;void QuickSort(int array[], int low, int high);int FindPos(int array[], int low, int high);int main(){  int i;  int array[10] = {13,2,5,18,7,12,9,10,15,6};  QuickSort(array,0,9);  for (i = 0;i <9 ;i++)  printf("%d,",array[i]);  printf("\n");  printf("num:%d\n",num);}void QuickSort(int array[], int low, int high){  int pos; if(low<high)   {    pos = FindPos(array,low,high);    QuickSort(array,low,pos-1);    QuickSort(array,pos+1,high);  }}int FindPos(int array[], int low, int high){   int temp = array[low];   while(low<high)  {     while(low<high&&temp<array[high])     high--;     array[low]=array[high];     num++;     while(low<high&&array[low]<temp)     low++;     array[high]=array[low];     num++;  }  array[low]=temp;  return low;}

5.选择排序

#include <stdio.h>static int num = 0;int main(){  int i,j,temp,b;  int array[10] = {13,2,5,18,7,12,9,10,15,6};  for(i=0;i<10;i++)  {    temp = i;    for(j=i+1;j<10;j++)   {    if(array[temp]>array[j])    {    temp = j;    }   }   if(temp!=i)   {     b = array[temp];     array[temp] = array[i];     array[i] = b;     num++;   }  }  for (i = 0;i <9 ;i++)  printf("%d,",array[i]);  printf("\n");  printf("num:%d\n",num);}





0 0
原创粉丝点击