美人心计

来源:互联网 发布:蒙牛 it 编辑:程序博客网 时间:2024/04/20 00:29

最近有部很火的片子叫美人心计,我也跟看了不少集,讲的是窦太后的故事,当然是戏说。看这部片子耽误我不少时间,好几天没有更新博客了,把昨天写的三段代码贴上吧。

/*

 * 计数排序

 * O(n)

 *  Created on: 2010-3-24

 *      Author: Sarah

 */

 

#include <iostream>

using namespace std;

 

void COUNTING_SORT(int[],int[],int,int);

 

int main()

{

   const int size = 10;

int  array1[size+1] = {0,24,2,6,11,66,34,7,5,2,77};

int  array2[size+1];

for (int i = 0; i <= size; i++)

array2[i] = 0;

COUNTING_SORT(array1,array2,size,100);

   for (int i = 1; i<=size; i++)

   cout<<array2[i]<<"   ";

   return 0;

return 0;

}

 

void COUNTING_SORT(int array1[],int array2[],int size,int MAX)

{

    int arrayCount[MAX+1];

    for (int i = 0; i <= MAX; i++)

    arrayCount[i] = 0;

    for (int j = 1; j <= size; j++)

    {

    arrayCount[array1[j]] = arrayCount[array1[j]] + 1;

    }

    for (int n = 1; n <= MAX; n++)

    arrayCount[n] = arrayCount[n] + arrayCount[n-1];

    for (int m = size; m>=1; m--)

    {

    array2[arrayCount[array1[m]]] = array1[m];

    arrayCount[array1[m]] = arrayCount[array1[m]] - 1;

    }

}

/*
 * 堆排序
 *
 *  Created on: 2010-3-24
 *      Author: Sarah
 */
#include <iostream>
using namespace std;
#define PARENT(i)  (i)/2;
#define LEFT(i) 2*(i);
#define RIGHT(i) 2*(i)+1;
void MAX_HEAPIFY(int[],int,int);
void BUILD_MAX_HEAP(int[],int);
void HEAP_SORT(int [],int);
//void MAX_HEAP_INSERT(int[],int);
int main()
{
    const int size = 10;
int  array[size+1] = {0,24,2,6,11,66,34,7,5,2,77};
HEAP_SORT(array,size);
    for (int i = 1; i<=size; i++)
    cout<<array[i]<<"   ";
    return 0;
}
void MAX_HEAPIFY(int array[],int size, int node)
{
    int l = LEFT(node);
    int r = RIGHT(node);
    int largest = node;
    if( l <= size && array[l] > array[node])
        largest = l;
    if( r <= size && array[r] > array[largest])
    largest = r;
    if ( largest != node)
    {
    int temp = array[node];
    array[node] = array[largest];
    array[largest] = temp;
    MAX_HEAPIFY(array, size, largest);
    }
}
void BUILD_MAX_HEAP(int array[],int size)
{
    for(int i = size/2; i >= 1; i-- )
    {
    MAX_HEAPIFY(array,size,i);
    }
}
void HEAP_SORT(int array[],int size)
{
   BUILD_MAX_HEAP(array,size);
   int heap_size = size;
   for (int i = size; i>= 2; i--)
   {
   int temp = array[1];
   array[1] = array[i];
   array[i] = temp;
   heap_size--;
   MAX_HEAPIFY(array, heap_size ,1);
   }
}
/*
 *快速排序
 *
 *  Created on: 2010-3-24
 *      Author: Sarah
 */
#include <iostream>
using namespace std;
void QUICK_SORT(int array[],int p, int r);
int PARTITION(int array[],int p,int r);
int main()
{
   const int size = 10;
int  array[size+1] = {0,24,2,6,11,66,34,7,5,2,77};
for (int i = 1; i<=size; i++)
cout<<array[i]<<"   ";
cout<<endl;
QUICK_SORT(array,1,size);
   for (int i = 1; i<=size; i++)
   cout<<array[i]<<"   ";
   return 0;
}
void QUICK_SORT(int array[],int p,int r)
{
if (p < r)
{
 int q = PARTITION(array,p,r);
      QUICK_SORT(array,p,q-1);
      QUICK_SORT(array,q,r);
}
}
int PARTITION(int array[],int p,int r)
{
      int x = array[r];
      int i = p-1;
      for (int j = p; j <= r-1; j++ )
      {
      if(array[j] <= x)
      {
      i++;
      int temp = array[j];
      array[j] = array[i];
      array[i] = temp;
      }
      }
      array[r] = array[i+1];
      array[i+1] = x;
      return i+1;
}