排序

来源:互联网 发布:js全局变量传进函数 编辑:程序博客网 时间:2024/05/01 11:23

#include "stdafx.h"
#include <windows.h>
    void swap(int *p1,int *p2);
    void maopaoSort(int arr[]);
 void selectSort(int arr[]);
 void insertSort(int arr[]);
 void kuaisuSort(int arr[],int left,int right);
    void display(int arr[]);
int  main()
{
 int arr[NUM]={5,6,1,3,2,4};
 printf("%s","排序前的数组:");
    display(arr);
 //maopaoSort(arr);
 //selectSort(arr);
 //insertSort(arr);
    kuaisuSort(arr,0,NUM-1);
 printf("%s","/n排序后的数组:");
 display(arr);
 system("pause");
 return 0;
}
void swap(int *p1,int *p2)
{
  int temp;
  temp=*p1;
  *p1=*p2;
  *p2=temp;
}
void selectSort(int arr[])
{
 for(int i=0;i<NUM;i++)
 {
   int m=i;
   for(int j=i+1;j<NUM;j++)
   {
     if(arr ­­>arr[j])
   m=j;
   }
   if(m!=i)
    swap(&arr­,&arr[i]);
 }
 
}
void maopaoSort(int arr[])
{
   for(int i=0;i<NUM;i++)
    for(int j=0;j<NUM-1-i;j++)
     if(arr[j]>arr[j+1])
      swap(&arr[j],&arr[j+1]);
}
void insertSort(int arr[])
{
   for(int i=1;i<NUM;i++)
   {
  int temp=arr[i];
  int j=i-1;
     while(temp<arr[j])
  {
   arr[j+1]=arr[j];
   if(--j==-1)
     break;
  }
  arr[j+1]=temp;
   }
}
void kuaisuSort(int arr[],int left,int right)
{
   if(left<right)
   {
    int primaryKey=arr[left];
    int low=left;
    int hight=right;
    while(left<right){
    while(left<right&&arr[right]>primaryKey)right--;
    arr[left]=arr[right];
    while(left<right&&arr[left]<primaryKey)left++;
    arr[right]=arr[left];
    }
    arr[right]=primaryKey;
       kuaisuSort(arr,low,left-1);
    kuaisuSort(arr,left+1,hight);
   }
}
void display(int arr[])
{
 for(int i=0;i<NUM;i++)
    printf("%d ",arr[i]);
}

 

原创粉丝点击