冒泡排序

选择排序

插入排序

希尔排序

 #define  N 10
 #define SWAP(a,b){int tmp;tmp=a;a=b;b=tmp;}

冒泡排序

  void arrMP(int* arr)
  {
     int i,j;                                                                                                                    
      for (i=0;i<N-1;++i)
      {   
          for (j=0;j<N-i-1;++j)
          {   
              if(arr[j] > arr[j+1])
                  SWAP(arr[j],arr[j+1]);
          }   
      }   
  }

选择排序

  void  arrSelect(int* arr){
      int i,j,maxPos;
      for (i=N;i>0;--i)
      {   
          maxPos = 0;                                                                                                             
          for (j=1;j<i;++j)
              if(arr[maxPos] < arr[j])
                  maxPos = j;
          SWAP(arr[maxPos],arr[i-1]);
      }   
  }

插入排序

void sortInsert(int* arr) {
	int i, j, insertVal;
	for ( i = 1; i < N; i++)
	{
		insertVal = arr[i];
		for ( j = i-1; j >= 0; --j)
		{
			if (arr[j] > insertVal)
			{
				arr[j + 1] = arr[j];
			}
			else {
				break;
			}
		}
		arr[j + 1] = insertVal;
	}
}

希尔排序

  void arrInsertPlus(int* arr)
  {
      int i,j,insertVal,gap;
      for (gap=N>>1;gap>0;gap>>=1)
      {   
       for (i=gap;i<N;++i)
       {   
        insertVal = arr[i];
        for (j=i-gap;j>=0&&arr[j]>insertVal;j=j-gap)
        {   
         arr[j+gap] = arr[j];
        }   
        arr[j+gap]=insertVal;
       }   
      }   
  }