當前位置:首頁 » 編程語言 » c語言對數組排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言對數組排序

發布時間: 2022-02-16 00:56:35

⑴ 用c語言對一維數組排序,並輸出已排好元素的原來位置

簡單的思路:

定義一個指針數組,找到b數組中元素在a數組中的地址,並存儲在指針數組對應位置。

之後將指針數組內的地址值依次取出來與a數組首地址相減,得到的就是原來的位置。

利用的原理:數組內地址是連續的!

#include<stdio.h>
intmain()
{
inta[5]={3,8,4,7,6},b[5]={8,7,6,4,3},c[5],i,j,*p[5];
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(b[i]==a[j])
p[i]=&a[j];
}
}

for(i=0;i<5;i++)
c[i]=p[i]-&a[0]+1;
printf("原來的位置數組c[5]={%d,%d,%d,%d,%d} ",c[0],c[1],c[2],c[3],c[4]);
}

⑵ C語言數組排序 簡單選擇排序

lz你的輸出函數用錯了,你的列印結果是內存地址,看了你的排序函數沒問題,只要修改下printf函數就ok了,這樣寫printf("%d ",a[i]);

⑶ C語言中怎樣把一個多維數組排序

同意一樓方法,講二維數組存到一維數組中,然後用qsort排序,再存到二維數組當中
代碼敲了一下,發現C語言快忘光了

#include <stdio.h>
#include <stdlib.h>

int comp(const void *a , const void *b){
return *(int *)b - *(int *)a; //這是b-a,如果是a-b就是從小到大排序
}

int main(){
int a[3][3];
int b[9];
int n;
int i , j , k;
for(i = 0 , k = 0; i < 3 ; i ++)
for(j = 0 ; j < 3 ; j ++){
scanf("%d",&a[i][j]);
b[k++] = a[i][j]; // k ++別看漏
}
qsort(b,9,sizeof(int),comp);//qsort函數很簡單的,看看就會,不怕麻煩,comp函數是指定排序是從小到大還是從大到小
for(i = 0 , k = 0; i < 3 ; i ++)
for(j = 0 ; j < 3 ; j ++){
a[i][j] = b[k++];
printf("%d",a[i][j]);
}
system("pause");
return 0;
}
qsort看不懂再給你個網路的鏈接
http://ke..com/view/982231.htm
自己再敲一次吧,代碼是敲出來的,多練練
ps:那個int n是多餘的,你的代碼測試了,可以

⑷ C語言中怎樣實現將數組中的整數進行升序排列

可以。。 #include "stdio.h"
void main()
{int a[10],i,j,t;

printf("enter 10 Z_nums:\n"); //提示輸入10個整數
for(i=0;i<10;i++)
scanf("%d",&a[i]);

for(i=0;i<9;i++) //冒泡排序排列10個整數
for(j=0;j<10-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;} printf("The sorted nums:\n");
for(i=0;i<10;i++) //輸出排序後的10個整數
printf("%d ",a[i]);
printf("\n");
}

⑸ C語言編寫函數,數組排序

void Swap(int *a, int *b)

{

int tmp = *a;

*a = *b;

*b = tmp;

}

void Selectsort(int *arr, int sz)

{for (int end=sz-1; end>=0; end--)

{

int max = end;

int i;

for ( i = 0; i <= end; i++)//選出最大下標

{

if (arr[i] > arr[max])

{

max = i;

}

}

Swap(&arr[end], &arr[max]);

}

}

int main()

{

int arr[5] = { 1, 3, 2, 5, 4 };

int sz = sizeof(arr) / sizeof(arr[0]);

for (int i = 0; i <= sz - 1; i++)

{

scanf("%d", &arr[i]);

}

Selectsort(arr, sz);

for (int i = 0; i <= sz - 1; i++)

{

printf("%d ", arr[i]);

}

system("pause");

return 0;

}

(5)c語言對數組排序擴展閱讀:

printf函數使用注意事項

1、域寬

%d:按整型數據的實際長度輸出。

如果想輸出指定寬度可以指定域寬,%md--&gt;m域寬,列印出來以後,在控制台上,顯示m位;

如果要列印的數的位數如果超過我們設定m則原樣輸出;

如果要列印的數的位數如果小於設定的位數,則補空白,具體如下:

如果m為正數,則左對齊(左側補空白);

如果m為負數,則右對齊(右側補空白)。

2、轉義字元

如果想輸出字元"%",則應該在「格式控制」字元串中用連續兩個%表示。

如:printf("%f%%",1.0/3);輸出結果:0.333333%。

⑹ c語言對一維數組排序

#include <stdio.h>
int main()
{
int i,j,t,a[11]; //定義變數及數組為基本整型
printf("請輸入10個數:\n");
for(i=1;i<11;i++)
scanf("%d",&a[i]); //從鍵盤中輸入10個數
for(i=1;i<10;i++) //變數i代表比較的趟數
for(j=1;j<10-i;j++) //變最j代表每趟兩兩比較的次數
if(a[j]>a[j+1])
{
t=a[j]; //利用中間變數實現兩值互換
a[j]=a[j+1];
a[j+1]=t;
}
printf("排序後的順序是:\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]); //將冒泡排序後的順序輸出
printf("\n");
return 0;
}

⑺ c語言中,用一維數組排序十個整數,怎麼做

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

⑻ C語言數組排序方法

選擇排序的原理是,每次從待排序數字中挑選出最大(最小)數字,放在有序序列的末尾。實際操作中,只需要在這個數組中將挑出來的數字與前面的數字交換即可。例如:4
1 5
2 3找到最小的1,1和4交換1
4 5
2
3找到最小的2,2和4交換1
2
5
4
3找到最小的3,3和5交換1
2
3
4
5找到最小的4,4和4交換(不交換也可)可見,選擇排序需要一個雙重循環來完成,因此它的復雜度是O(n^2)在數據量比較大時,不建議使用這種排序方法。 其他排序方法有很多,你甚至可以自己根據不同數據規模設計不同的排序方法。比較常見的有冒泡排序,插入排序(這兩種和選擇排序一樣,都是O(n^2)),二分法插入排序(降低了一些復雜度,但是涉及到大規模數據移動,效率依然不高),快速排序(平均復雜度O(nlogn),但是不穩定,最壞情況O(n^2)),隨機化快速排序(很大程度上避免了最壞情況的出現),堆排序(O(nlogn),編程復雜度高),基數排序(理論復雜度O(n),實際要比這個慢。甚至能應付字元串排序,但是編程復雜度高,牽扯到其他數據結構),桶排序(O(n),編程簡單,效率高,但是應付的數據范圍不能太大,受到內存大小的限制)。 平時比較常用的就是快速排序,程序簡單,效率也可以接受。 這是我了解的一些東西,希望對你有幫助。