当前位置: 首页>>代码示例>>C++>>正文


C++ quick_sort函数代码示例

本文整理汇总了C++中quick_sort函数的典型用法代码示例。如果您正苦于以下问题:C++ quick_sort函数的具体用法?C++ quick_sort怎么用?C++ quick_sort使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了quick_sort函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: main

int main() {
  int A[10] = {2, 1, 5, 4, 6, 7, 9, 8,3, 0};
  int size = sizeof(A) / sizeof(int);
  quick_sort(A, 0, size-1);
  print(A, 0, 10);

  int B[0] = {};
  size = sizeof(B)/sizeof(int);
  quick_sort(B, 0, size-1);
  print(B, 0, size);

  int C[1] = {1};
  size = sizeof(C)/sizeof(int);
  quick_sort(C, 0, size-1);
  print(C, 0, size);


  int D[10] = {12, 32, 22, 22, 22, 12, -1, 12, 0, -100};
  size = sizeof(D)/sizeof(int);
  quick_sort(D, 0, size-1);
  print(D, 0, size);
  return 0;
}
开发者ID:suyangzhu,项目名称:Practice,代码行数:23,代码来源:quick_sort.c

示例2: test3

static void test3()  
{  
	int i;
	int array[] = {4, 3, 2,1,5,6,7,8,5,6,7,9,100,200,400, 19, 30, 20, 15};  
	quick_sort(array, sizeof(array)/sizeof(int));  
	assert(1 == array[0]);  
	assert(2 == array[1]);  
	assert(3 == array[2]);  
	assert(4 == array[3]);  
	printf("sorted test3 array: ");
	for(i = 0; i < sizeof(array)/sizeof(int); i++ )
		printf("%d ", array[i]);
	printf("\n");
}  
开发者ID:xxha,项目名称:ds_algos,代码行数:14,代码来源:quick_sort.c

示例3: quick_sort

void quick_sort(char *str, int left, int right){
	if(left < right){
		char pivot = median(str[left], str[(left + right) / 2], str[right]);
		int i = left;
		int j = right;
		while(1){
			while(str[i] < pivot) ++i;
			while(str[j] > pivot) --j;
			if(i < j)
				if(str[i] == str[j])
					--j;
				else
					swap(&str[i], &str[j]);
			else 
				break;

		}
		//	swap(&str[i], &str[right - 1]);
			quick_sort(str, left, i - 1);
			quick_sort(str, i + 1, right);

	}
}
开发者ID:li--paul,项目名称:careercup-10,代码行数:23,代码来源:1_4.c

示例4: main

int main(void)
{
      int array[N];
      
      init_array(array,N);
printf("original\n");
      printf_array(array,N);
getchar();
//      bubble_array(array,N);
      quick_sort(array,0,N-1);
printf("sort\n");
      printf_array(array,N);
    return 0;
}
开发者ID:renbo,项目名称:code,代码行数:14,代码来源:x快速排序.c

示例5: main

int main()
{
	int size;
	printf("Enter the size of array : ");
	scanf("%d",&size);
	int arr[size],i;
	for(i=0;i<size;i++)
		scanf("%d",&arr[i]);
	quick_sort(arr,0,size-1);
	for(i=0;i<size;i++)
		printf("%d\t",arr[i]);
	printf("\n");
	return 0;
}
开发者ID:abhisheknith,项目名称:Code,代码行数:14,代码来源:quick_sort.c

示例6: main

/* Driver program to test above functions */
int main()
{
    int arr[] = {12, 11, 13, 5, 6, 7};
    int size = sizeof(arr)/sizeof(arr[0]);
 
    printf("Given array is \n");
    printArray(arr, size);
 
    quick_sort(arr, 0, size - 1);

   printf("\nSorted array is \n");
   printArray(arr, size);
   return 0;
}
开发者ID:Jianwei-Wang,项目名称:an,代码行数:15,代码来源:quick_sort.c

示例7: main

int main()
{
	int array[] = {3, 7, 2, 4, 1, 6};
	int ilen = LENGTH(array);
	
	printf("Begin sort:\n");
  	print_array(array, ilen);
	
	quick_sort(array, 0, ilen-1);
	
	printf("After sort: \n");
	print_array(array, ilen);

}
开发者ID:maydaygjw,项目名称:datastructs_and_algorithm,代码行数:14,代码来源:quick_sort.c

示例8: test_quick_sort

void test_quick_sort(void)
{
	int quick_sort_array[] = {9,8,7,6,5,4,3,2,1};
	int i;

	quick_sort(quick_sort_array, 0, 8);

	debug_print("quick sort test:");
	for (i = 0; i < 9; i++)
	{
		debug_print("%d ", quick_sort_array[i]);
	}

}
开发者ID:bill1118qq,项目名称:Project_Euler,代码行数:14,代码来源:problem_41.c

示例9: quick_sort

//Função do quicksort, que recebe o limite
void quick_sort (int *nArray, int nLimite) {
  int nAnte, nProx, nMetade, nValAux, nAux;
     
  //Testando o limite e pegando a metade
  if (nLimite < 2)
    return;
  nMetade = nArray[nLimite / 2];
     
  //fazendo um for duplo, diminuindo o próximo e aumentando o anterior
  for (nAnte = 0, nProx = nLimite - 1;; nAnte++, nProx--) {
    //imprimindo os valores
    for(nAux=0;nAux<=nLimite-1;nAux++){
      printf("[%d]",nArray[nAux]);
      espera;
    }
    printf("\n");
         
    //enquanto for menor que a metade
    while (nArray[nAnte] < nMetade)
      nAnte++;
    //enquanto a metade for menor que o próximo
    while (nMetade < nArray[nProx])
      nProx--;
    //se o anterior é maior que o próximo quebra o laço
    if (nAnte >= nProx)
      break;
     
    //fazendo troca de posições
    nValAux = nArray[nAnte];
    nArray[nAnte] = nArray[nProx];
    nArray[nProx] = nValAux;
  }
   
  //Chamando rotina novamente em recursividade
  quick_sort(nArray, nAnte);
  quick_sort(nArray + nAnte, nLimite - nAnte);
}
开发者ID:Development-School,项目名称:Linguagem_C,代码行数:38,代码来源:shell_quick.c

示例10: quick_sort

void quick_sort(int a[], int left, int right)
{
    int i = left;
    int j = right;
    int pivot = a[left];

    if (left >= right)
        return;

    while (i != j) {
        /* process right zone */
        while (i < j && a[j] >= pivot)
            j--;
        if (i < j) {
            a[i] = a[j];
            printf("a[%d] = a[%d]\n", i, j);
        }

        /* process left zone */
        while (i < j && a[i] <= pivot)
            i++;
        if (i < j) {
            a[j] = a[i];
            printf("a[%d] = a[%d]\n", j, i);
        }
    }
    a[i] = pivot;
    printf("a[%d] = %d\n", i, pivot);

    int idx;
    for (idx = 0; idx < 9; idx++)
        printf("%d ", a[idx]);
    printf("\n");

    quick_sort(a, left, i-1);
    quick_sort(a, i+1, right);
}
开发者ID:bazz2,项目名称:utils,代码行数:37,代码来源:sort.c

示例11: quick_sort

// greedy methods
void quick_sort(item* arr, int from, int to)
{
	int i = from,
		j = to;
	double x = arr[(from + to) / 2].cost / arr[(from + to) / 2].weight; //опорный элемент

	do // пока i и j не пересеклись
	{
		while ((arr[i].cost / arr[i].weight) < x) i++; // идём до элемента не из левой группы (больше разделительного)
		while ((arr[j].cost / arr[j].weight) > x) j--; // идём, пока не встретим элемент меньше разделительного

		if (i <= j)
		{
			if ((arr[i].cost / arr[i].weight) > (arr[j].cost / arr[j].weight)) // строгое для устойчивости
			{
				//swap(arr[i], arr[j]);
				int temp = arr[i].cost;
				arr[i].cost = arr[j].cost;
				arr[j].cost = temp;
				temp = arr[i].weight;
				arr[i].weight = arr[j].weight;
				arr[j].weight = temp;
			}
			i++;
			j--;
		}
	} while (i <= j);

	if (from < j) // рекурсивный вызов для левой части массива
	{
		quick_sort(arr, from, j);
	}
	if (to > i) // рекурсивный вызов для правой части массива
	{
		quick_sort(arr, i, to);
	}
}
开发者ID:ivan-karavan,项目名称:Homework,代码行数:38,代码来源:knapsack.cpp

示例12: quick_sort

void quick_sort(int* data, int length)
{
    int right = length, left = 0;
    int middle = data[length/2];

    do
    {
        while (data[left] < middle)
        {
            left++;
        }
        while (data[right] > middle)
        {
            right--;
        }

        if (left <= right)
        {
            swap1(&data[left], &data[right]);
            left++;
            right--;
        }

    }
    while (left < right);

    if (right > 0)
    {
        quick_sort(data, right);
    }

    if (left < length)
    {
        quick_sort(data + left, length - left);
    }

}
开发者ID:opomuc,项目名称:code-dump,代码行数:37,代码来源:qsort_unknown.c

示例13: quick_sort

void quick_sort(int left, int right, long ar[], int ar_len[]) {

/*quick_sortは整数が格納された配列ar、各整数の文字数が格納された配列ar_lenを*/
/*呼び出し元の関数から受け取り、配列中の左端left、右端rightで指定される範囲に対して*/
/*クイックソートによるar,ar_lenの整列を行う。*/

  int p_index, p_val;		/*p_indexは軸要素の添え字番号、p_valは軸要素そのものを格納する。*/
  int l_edge = left;		/*処理範囲の軸要素より左の範囲を調査するカーソル*/
  int r_edge = right;		/*処理範囲の軸要素を含む、軸要素より右の範囲を調査するカーソル*/

  p_index = pivot(left, right, ar);	/*配列中の軸要素の要素番号を求める*/

  if(p_index != -1) {		/*p_indexが-1ならば、pivotで調べた範囲はすべて同じ数字が入っているのでソートをスキップ*/
    p_val = ar[p_index];	/*軸要素をp_valに格納*/

    while(1) {	/*配列の分割を行うループ*/

/*l_edgeは処理する範囲の左端から、軸要素より大きな要素を見つけるまで右にずれる。*/
/*r_edgeは処理する範囲の右端から、軸要素より小さな要素を見つけるまで左にずれる。*/
      while(ar[l_edge] < p_val) l_edge++;
      while(ar[r_edge] >= p_val) r_edge--;

/*l_edgeがr_edgeより右なら、その範囲でのソートは終了。*/
      if(l_edge > r_edge) break;

/*ソートが終わっていないなら、その時点でのl_edgeとr_edgeの位置にある要素を交換する。*/
      swap(r_edge, l_edge, ar, ar_len);

/*交換後、l_edge、r_edgeの両方をずらして、ループする。*/
      l_edge++;
      r_edge--;
    }
/*調査範囲の分割後、分割した左の範囲と右の範囲についてそれぞれquick_sortを再帰呼び出ししてソートを進める*/
    quick_sort(left, l_edge - 1, ar, ar_len);
    quick_sort(l_edge, right, ar, ar_len);
  }
}
开发者ID:hisaos,项目名称:fragments,代码行数:37,代码来源:kadai10.c

示例14: memset

//-------- Begin of function GameFileArray::save_new_game -----//
//
// Save current game to a new saved game file immediately without
// prompting menu.
//
// Called by GameFileArray::process_action() and error handler.
//
// [char*] fileName - file name of the saved game
//
void GameFileArray::save_new_game(const char* fileName)
{
	GameFile  gameFile;
	GameFile* gameFilePtr;
	int       addFlag=1;
	int       gameFileRecno;

	memset( &gameFile, 0, sizeof(GameFile) );

	if( fileName )
	{
		//----- check for overwriting an existing file ----//

		for( gameFileRecno=1 ; gameFileRecno<=game_file_array.size() ; gameFileRecno++ )
		{
			gameFilePtr = game_file_array[gameFileRecno];

			if( strcmp(gameFilePtr->file_name, fileName)==0 )      // if this file name already exist
			{
				addFlag=0;
				break;
			}
		}

		strcpy( gameFile.file_name, fileName );
   }
	else
   {
      gameFile.set_file_name();        // give it a new game_file_name based on current group name
   }

	//----------- save game now ------------//

	if( gameFile.save_game(fileName) )
	{
		strcpy( last_file_name, gameFile.file_name );

		if( addFlag )
		{
         linkin(&gameFile);

			quick_sort( sort_game_file_function );
      }
		else
      {
         game_file_array.update(&gameFile, gameFileRecno);
      }
   }
}
开发者ID:Cap-Man,项目名称:7kaa,代码行数:58,代码来源:OGFILEA.cpp

示例15: main

int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int input[n];
        for(int i=0; i<n; i++)
            scanf("%d",&input[i]);
        quick_sort(0,n-1,n,input);
        for(int i=0; i<n; i++)
            printf("%d ",input[i]);
        printf("\n");
    }
    return 0;
}
开发者ID:tommy12161995,项目名称:program-design,代码行数:15,代码来源:main.c


注:本文中的quick_sort函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。